Há várias opções para implantar o MySQL como parte de um projeto do Google Cloud. Você pode usar o Cloud SQL, o Google Cloud Marketplace ou instalar manualmente o MySQL no Compute Engine.
O Cloud SQL oferece o MySQL como um serviço da Web. Use o Cloud SQL para hospedar seu banco de dados MySQL na nuvem do Google e deixe que o Google Cloud cuide de tarefas administrativas como replicação, gerenciamento de patches e do banco de dados.
O Cloud Marketplace fornece uma interface click-to-deploy simples que facilita a instalação do MySQL em uma instância do Compute Engine. O Cloud Marketplace não inclui apenas uma instalação autônoma do MySQL, mas também várias pilhas de desenvolvimento da Web que usam o MySQL, incluindo pilhas LAMP e LEMP e clusters do Percona MySQL.
Caso prefira instalar e personalizá-lo manualmente, use o Compute Engine para criar um banco de dados MySQL em questão de minutos. Neste documento, você encontra orientações sobre a escolha dessas opções e os detalhes da instalação manual desse banco de dados no Compute Engine.
Como escolher a opção correta de implantação do MySQL
O Cloud SQL é uma ótima opção se você quiser a conveniência de ter o Google Cloud cuidando do processamento do banco de dados de back-end e da administração do servidor. Por exemplo, com o Cloud SQL, você tem backups automatizados e recuperação pontual. Além disso, os dados são replicados em várias zonas, o que proporciona maior disponibilidade e resiliência.
Talvez você prefira instalar o MySQL no Compute Engine, caso precise de um recurso não compatível com o Cloud SQL. Por exemplo, o Cloud SQL não tem suporte para funções definidas pelo usuário ou para o privilégio SUPER. Para mais informações, consulte as Perguntas frequentes do Cloud SQL.
Caso decida instalar o MySQL no Compute Engine, é possível usar o Cloud Marketplace para implantar uma instalação do MySQL ou instalá-lo manualmente em uma instância do Compute Engine. O Cloud Marketplace oferece uma maneira prática de implantar o MySQL como parte de pilhas de desenvolvimento maiores. O Cloud Marketplace fornece várias opções de instalação do MySQL, incluindo instalação autônoma do MySQL, pilhas LAMP, LEMP e Nginx, instalação de cluster do MySQL Percona e muitas outras.
Se as ofertas do Cloud Marketplace não atenderem às suas necessidades, instale manualmente o MySQL em uma instância do Compute Engine. É possível, por exemplo, implantar o MySQL em uma imagem personalizada que você criou ou controlar todo o processo de instalação.
Para instalar o MySQL manualmente em uma instância do Compute Engine, basta criar uma instância, e a instalação pode ser feita diretamente nela.
Para mais informações sobre cada opção, consulte os seguintes recursos:
- Para o Cloud SQL, consulte a documentação do Cloud SQL para MySQL.
Para o Cloud Marketplace, consulte as opções de instalações do MySQL no console do Google Cloud:
Para instalação manual do MySQL em uma instância do Compute Engine, consulte o restante deste documento.
Objetivos
- Criar uma instância do Compute Engine.
- Instalar o MySQL
- Conectar-se ao MySQL.
Pré-requisitos
Crie um novo projeto no Console do Google Cloud. Também é possível usar um projeto atual, mas, se você criar um novo, a limpeza ficará mais fácil.
Conclua todas as etapas deste documento usando o Console do Google Cloud. Se preferir usar a gcloud CLI, siga essas etapas para ativar a API Compute Engine e instalar a Google Cloud CLI.
Use o Console do Google Cloud para ativar a API Compute Engine.
Instale a CLI gcloud.
Configure seu espaço de trabalho para tornar os comandos menos detalhados. Substitua os valores do seu projeto por
PROJECT_ID
,REGION
eZONE
nos comandos a seguir. Para ver a lista completa de zonas, consulte Regiões e zonas disponíveis.gcloud config set project PROJECT_ID gcloud config set compute/region REGION gcloud config set compute/zone ZONE
Crie uma instância do Compute Engine
Crie uma instância do Compute Engine para MySQL e estabeleça uma conexão SSH para se conectar a ela. O sistema operacional padrão é o Debian versão 10. Se preferir usar um sistema operacional diferente neste tutorial, escolha uma das opções descritas na página de imagens públicas da documentação do Compute Engine.
Console
Para criar uma instância do Compute Engine no Console do Google Cloud:
No console do Google Cloud, acesse a página Instâncias de VM do Compute Engine.
Selecione o projeto recém-criado e clique em Continuar.
Clique em Criar instância ou Nova instância, caso você já tenha instâncias. Atribua o nome mysql-test a ela.
Para especificar um sistema operacional diferente do padrão, na seção Disco de inicialização, clique em Alterar para configurar as propriedades do disco de inicialização. Na guia Imagens públicas, selecione um sistema operacional e clique em Salvar.
Para estar em conformidade com as práticas recomendadas de segurança, crie a instância sem um endereço IP externo.
Expanda Opções avançadas e expanda Rede. Em Interfaces de rede, expanda a interface padrão e, no menu Endereço IPv4 externo, selecione Nenhum.
Clique em Criar.
Configurar e gerenciar a conversão de endereços de rede com o Cloud NAT
No Console do Google Cloud, acesse a página do Cloud NAT.
Clique em Primeiros passos ou Criar gateway Cloud NAT.
Em Nome do gateway, digite
nat-simple-configuration
.Para a rede VPC do gateway NAT, escolha default.
Em Região do gateway NAT, escolha a região que você escolheu acima.
Em Cloud Router, selecione Criar novo roteador.
Na caixa de diálogo, insira um Nome para o roteador,
nat-router-simple-configuration
, e clique em Criar.Clique em Configuração avançada.
Em Stackdriver Logging, selecione Tradução e erros. Isso envia todos os registros para o Cloud Logging.
Clique em Criar.
Para estabelecer uma conexão SSH, siga estas etapas:
Na página Instâncias de VM, localize a nova instância na lista.
Na coluna Conectar, clique em SSH. O terminal do SSH será aberto em uma janela do navegador.
gcloud
Para criar uma instância do Compute Engine, use o comando
gcloud compute instances create
. Para especificar o sistema operacional, adicione o parâmetro--image-family
seguido pela família de imagens ou o parâmetro--image
seguido pelo nome de uma versão de imagem específica. Por exemplo, para usar a imagem mais recente da família Debian 10, adicione--image-family debian-10
. Ao usar imagens públicas, o projeto de imagem precisa ser fornecido usando o parâmetro--image-project
.gcloud compute instances create \ --image-family debian-10 \ --image-project debian-cloud \ --no-address \ mysql-test
Criar um Cloud Router simples.
gcloud compute routers create nat-router-simple-configuration \ --network=default
Configurar e gerenciar a conversão de endereços de rede com o Cloud NAT
gcloud compute routers nats create nat-simple-configuration \ --router=nat-router-simple-configuration \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --enable-logging
Conecte-se à instância usando
ssh
.gcloud compute ssh \ --tunnel-through-iap \ mysql-test
As conexões SSH são feitas usando o encaminhamento de TCP, que é processado pelo Identity-Aware Proxy (IAP).
Instalar o MySQL
As etapas a seguir descrevem como instalar o MySQL em uma instância do Compute Engine.
Debian 10+
Estas instruções instalam o MySQL 8 ou 5.7.
As versões 10 e posteriores do Debian contêm o MariaDB em vez do MySQL como parte do sistema de gerenciamento de pacotes. O MariaDB mantém a compatibilidade com o protocolo MySQL, mas tem um conjunto de recursos em evolução independente. Para mais detalhes, consulte MariaDB x MySQL.
Para instalar o MySQL, faça o download do pacote de versão e instale-o manualmente usando
o comando dpkg
.
Instale a dependência
wget
.sudo apt-get install -y wget
Faça o download do pacote de versão do MySQL Community Server.
export DEB_FILE=mysql-apt-config_0.8.20-1_all.deb cd /tmp curl -L --output ${DEB_FILE} \ https://dev.mysql.com/get/${DEB_FILE}
Verifique a integridade do arquivo do pacote de versão.
cat > ${DEB_FILE}.md5 << EOL 799bb0aefb93d30564fa47fc5d089aeb ${DEB_FILE} EOL md5sum --check ${DEB_FILE}.md5
A autenticidade e a integridade do arquivo estarão verificadas se você vir a saída a seguir.
mysql-apt-config_0.8.20-1_all.deb: OK
Depois de verificar o arquivo, adicione o pacote MySQL ao repositório de pacotes local.
sudo dpkg -i ${DEB_FILE}
Confirme as opções de instalação, incluindo a versão do MySQL.
Com a opção do menu superior MySQL Server e Cluster selecionada, pressione Return e use as teclas de seta para escolher uma versão do servidor.
Neste guia, você precisa escolher MySQL 8.0 ou 5.7. Pressione Return no teclado depois de selecionar a versão.
Quando estiver tudo certo com as opções selecionadas no menu de configurações, use as teclas de seta para selecionar
Ok
no menu e pressione Return no teclado.Atualize o cache do pacote.
sudo apt-get update
Se você receber a mensagem de erro de GPG As seguintes assinaturas não foram verificadas porque a chave pública não está disponível: NO_PUBKEY 467B942D3A79BD29, importe as chaves de GPG ausentes com um que segue este padrão:
sudo apt-key adv \ --keyserver keyserver.ubuntu.com \ --recv-keys 467B942D3A79BD29
Na mensagem de erro demonstrativa, a chave pública ausente é
467B942D3A79BD29
. Forneça esse valor com a opção--recv-keys
.Repita o comando para atualizar o cache do pacote.
Instale o MySQL. O processo de instalação inicia o serviço MySQL para você.
sudo apt-get -y install mysql-community-server
Você precisará fornecer alguns detalhes para a instalação, como a senha raiz.
Debian 9
Estas instruções instalam o MySQL 8 ou 5.7.
Por padrão, algumas versões do Debian, como o Debian 9, instalam o MariaDB como o servidor padrão do MySQL. O MariaDB foi projetado para ser amplamente compatível com o MySQL e pode ser invocado com os mesmos comandos. Para saber mais detalhes sobre as diferenças entre o MariaDB e o MySQL padrão, consulte Como passar do MySQL para o MariaDB no Debian 9.
Para instalar o MySQL, siga estas instruções:
Faça o download do pacote de versão do MySQL Community Server.
export DEB_FILE=mysql-apt-config_0.8.17-1_all.deb cd /tmp curl -L --output ${DEB_FILE} \ https://dev.mysql.com/get/${DEB_FILE}
Verifique a integridade do arquivo do pacote de versão.
cat > ${DEB_FILE}.md5 << EOL 9e393c991311ead61dcc8313aab8e230 ${DEB_FILE} EOL md5sum --check ${DEB_FILE}.md5
A autenticidade e a integridade do arquivo estarão verificadas se você vir a saída a seguir.
mysql-apt-config_0.8.17-1_all.deb: OK
Depois de verificar o arquivo, adicione o pacote MySQL ao repositório de pacotes local.
sudo dpkg -i ${DEB_FILE}
Confirme as opções de instalação, incluindo a versão do MySQL.
Com a opção do menu superior MySQL Server e Cluster selecionada, pressione Return e use as teclas de seta para escolher uma versão do servidor.
Neste guia, você precisa escolher MySQL 8.0 ou 5.7. Pressione Return no teclado depois de selecionar a versão.
Quando estiver tudo certo com as opções selecionadas no menu de configurações, use as teclas de seta para selecionar
Ok
no menu e pressione Return no teclado.Atualize o cache do pacote.
sudo apt-get update
Se você receber a mensagem de erro de GPG As seguintes assinaturas não foram verificadas porque a chave pública não está disponível: NO_PUBKEY 467B942D3A79BD29, importe as chaves de GPG ausentes com um que segue este padrão:
sudo apt-key adv \ --keyserver keyserver.ubuntu.com \ --recv-keys 467B942D3A79BD29
Na mensagem de erro demonstrativa, a chave pública ausente é
467B942D3A79BD29
. Forneça esse valor com a opção--recv-keys
.Repita o comando para atualizar o cache do pacote.
Instale o MySQL. O processo de instalação inicia o serviço MySQL para você.
sudo apt-get -y install mysql-community-server
Ubuntu
Para o Ubuntu 1804 e versões anteriores, estas instruções instalam o MySQL 5.7.
Para o Ubuntu 2004 e versões posteriores, estas instruções instalam o MySQL 8.
Atualize o gerenciador de pacotes
apt-get
.sudo apt-get update
Instale o MySQL. O processo de instalação inicia o serviço MySQL para você.
sudo apt-get -y install mysql-server
Por padrão, nas distribuições do Ubuntu, o MySQL autentica o usuário
root
com o plug-inauth_socket
. Execute esta consulta para verificar a configuração padrão:echo "SELECT user, authentication_string, plugin, host FROM mysql.user WHERE user='root' ;" \ | sudo mysql -t -u root
A saída mostra que o usuário
root
que se conecta a partir delocalhost
usará o plug-inauth_socket
:+------+-----------------------+-------------+-----------+ | user | authentication_string | plugin | host | +------+-----------------------+-------------+-----------+ | root | | auth_socket | localhost | +------+-----------------------+-------------+-----------+
Altere essa configuração e a senha raiz para uma difícil de adivinhar:
export PASSWORD=`uuidgen`; echo "Root password is : $PASSWORD" echo "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$PASSWORD'" \ | sudo mysql -u root
A saída contém a nova senha raiz:
Root password is : 25fe2177-778a-414f-b80e-5fb8c8671de3
CentOS ou RHEL 7
Estas instruções instalam o MySQL 8.
A versão 7 do CentOS e do RHEL contém MariaDB em vez de MySQL como parte do sistema de gerenciamento de pacotes. Para instalar o MySQL, atualize o gerenciador de pacotes.
Faça o download do pacote de versão do MySQL Community Server.
export RPM_FILE=mysql80-community-release-el7-4.noarch.rpm cd /tmp curl -L --output ${RPM_FILE} \ https://dev.mysql.com/get/${RPM_FILE}
Verifique a integridade do arquivo do pacote de versão.
cat > ${RPM_FILE}.md5 << EOL 8b55d5fc443660fab90f9dc328a4d9ad ${RPM_FILE} EOL md5sum --check ${RPM_FILE}.md5
A autenticidade e a integridade do arquivo estarão verificadas se você vir a saída a seguir.
mysql80-community-release-el7-4.noarch.rpm: OK
Atualize o gerenciador de pacotes para incluir o MySQL.
sudo rpm -Uvh ${RPM_FILE}
Instale o MySQL.
sudo yum -y install mysql-community-server
Inicie o servidor MySQL.
sudo /usr/bin/systemctl start mysqld
Consiga a senha raiz temporária nos registros do servidor
sudo cat /var/log/mysqld.log | grep -i 'temporary password'
Rocky Linux ou RHEL 8
Estas instruções instalam o MySQL 8.
A versão 8 do Rocky Linux, CentOS Stream e RHEL contém o MariaDB em vez do MySQL como parte do sistema de gerenciamento de pacotes. Para instalar o MySQL, atualize o gerenciador de pacotes.
Faça o download do pacote de versão do MySQL Community Server.
export RPM_FILE=mysql80-community-release-el8-2.noarch.rpm cd /tmp curl -L --output ${RPM_FILE} \ https://dev.mysql.com/get/${RPM_FILE}
Verifique a integridade do arquivo do pacote de versão.
cat > ${RPM_FILE}.md5 << EOL 0ba3feb1c9ee35d30e5ae683accaf54b ${RPM_FILE} EOL md5sum --check ${RPM_FILE}.md5
A autenticidade e a integridade do arquivo estarão verificadas se você vir a saída a seguir.
mysql80-community-release-el8-2.noarch.rpm: OK
Atualize o gerenciador de pacotes para incluir o MySQL.
sudo rpm -iUvh ${RPM_FILE}
Instale o MySQL. Durante a instalação, desative o repositório do AppStream para que a instalação use o servidor da comunidade.
sudo yum module disable -y mysql sudo yum install -y \ --disablerepo=appstream \ mysql-community-server
Inicie o servidor MySQL.
sudo /usr/bin/systemctl start mysqld
Consiga a senha raiz temporária nos registros do servidor
sudo cat /var/log/mysqld.log | grep -i 'temporary password'
Melhorar a segurança da instalação do MySQL
Para melhorar a segurança da instalação do MySQL, execute o comando mysql_secure_installation
. Se você não tiver configurado uma senha durante o processo de instalação, crie uma nesta etapa. Para mais informações sobre esse comando, consulte a documentação do MySQL relativa a mysql_secure_installation.
sudo mysql_secure_installation
Conectar-se ao MySQL
As etapas a seguir descrevem como se conectar ao MySQL a partir da instância mysql-test
.
MySQL 8.0
Conecte-se ao MySQL usando o cliente do MySQL.
sudo mysql -u root -p
Quando você se conecta ao MySQL, o prompt muda para
mysql>
:Agora é possível executar os comandos do MySQL. Por exemplo, este comando mostra os threads em execução, inclusive a conexão atual:
mysql> SHOW processlist;
+----+-----------------+-----------+------+---------+------+------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+-----------------+-----------+------+---------+------+------------------------+------------------+ | 5 | event_scheduler | localhost | NULL | Daemon | 1889 | Waiting on empty queue | NULL | | 14 | root | localhost | NULL | Query | 0 | init | show processlist | +----+-----------------+-----------+------+---------+------+------------------------+------------------+ 2 rows in set (0.00 sec)
Use o comando a seguir para gerar uma lista de usuários.
mysql> SELECT User, Host, authentication_string FROM mysql.user;
+------------------+-----------+------------------------------------------------------------------------+ | User | Host | authentication_string | +------------------+-----------+------------------------------------------------------------------------+ | mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | mysql.session | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | mysql.sys | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | root | localhost | $A$005$,BS{G+*#cVYxb6x40q0aFS5dp2/Kz6u2vennR5qe0eBKVA/6VW5B | +------------------+-----------+------------------------------------------------------------------------+ 4 rows in set (0.00 sec)
Ao terminar de executar os comandos, use o comando
exit
para encerrar o cliente MySQL. Em seguida, useexit
novamente para sair da instância do Compute Engine.mysql> exit
Bye
MySQL 5.7
Conecte-se ao MySQL usando o cliente do MySQL.
sudo mysql -u root -p
Quando você se conecta ao MySQL, o prompt muda para
mysql>
:Agora é possível executar os comandos do MySQL. Por exemplo, este comando mostra os threads em execução, inclusive a conexão atual:
mysql> SHOW processlist;
+----+------+-----------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+-------+------------------+ | 51 | root | localhost | NULL | Query | 0 | NULL | show processlist | +----+------+-----------+------+---------+------+-------+------------------+ 1 row in set (0.00 sec)
Use o comando a seguir para gerar uma lista de usuários.
mysql> SELECT User, Host, authentication_string FROM mysql.user;
+---------------+-----------+-------------------------------------------+ | User | Host | authentication_string | +---------------+-----------+-------------------------------------------+ | root | localhost | *A047B05AAB007B33F8F2BD1FD404661D167D6348 | | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | +---------------+-----------+-------------------------------------------+ 3 rows in set (0.00 sec)
Ao terminar de executar os comandos, use o comando
exit
para encerrar o cliente MySQL. Em seguida, useexit
novamente para sair da instância do Compute Engine.mysql> exit
Bye
Limpeza
Depois de concluir o tutorial, limpe os recursos que você criou para que eles parem de usar a cota e incorrer em cobranças. Nas seções a seguir, você aprenderá a excluir e desativar esses recursos.
Excluir o projeto
O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.
Para excluir o projeto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Como excluir instâncias
Para excluir uma instância do Compute Engine, faça o seguinte:
- In the Google Cloud console, go to the VM instances page.
- Select the checkbox for the instance that you want to delete.
- To delete the instance, click More actions, click Delete, and then follow the instructions.
A seguir
Você aprendeu a instalar o servidor do MySQL no Compute Engine. Para conhecer aplicativos mais complexos que usam o MySQL, consulte a grande variedade de pilhas de desenvolvimento que usam esse banco de dados no Cloud Marketplace.
Caso seus requisitos incluam alta disponibilidade e dimensionalidade, instale o MySQL Cluster no Compute Engine. O MySQL Cluster fornece alta disponibilidade e escalonabilidade por meio de clustering sem compartilhamento e auto-fragmentação. O Cloud Marketplace oferece uma opção click-to-deploy para o Percona, uma solução de código aberto para clustering no MySQL.
Outra solução de código aberto para escalabilidade do MySQL é o Vitess, que veicula todo o tráfego de banco de dados do YouTube desde 2011. O Vitess é adequado para aplicativos que funcionam em contêineres. Para mais informações sobre como usar o Vitess em um ambiente em contêineres, consulte Como executar o Vitess no Kubernetes.
Para mais informações sobre o MySQL, consulte a documentação oficial do MySQL.
Confira arquiteturas de referência, diagramas e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.