Para mais informações sobre a configuração da réplica externa, acesse Sobre a replicação a partir de um servidor externo.
Definir a configuração da réplica externa
Antes de começar
Antes de iniciar essa tarefa, você precisa ter uma instância do Cloud SQL e uma instância externa do MySQL que atendam aos requisitos de réplicas externas.
Configurar a instância primária
- Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.
- Ative o acesso na instância principal do endereço IP da réplica externa.
Para informações sobre como ativar o acesso ao IP, consulte Como configurar o acesso para conexões IP.
- Registre o endereço IP público e o endereço IP de saída público da instância principal para usar posteriormente. Encontre esses valores na página de Visão geral da instância.
- Clique no ícone do Cloud Shell () no canto superior direito.
- No prompt do Cloud Shell, use o cliente MySQL integrado para
se conectar à instância principal:
gcloud sql connect PRIMARY_INSTANCE_NAME \ --user=root
- Insira a senha raiz. O prompt do mysql será exibido.
- Crie um usuário especial para replicação e conceda privilégios de replicação:
CREATE USER 'REPLICATION_USER'@'%' IDENTIFIED BY 'REPLICATION_USER_PASSWORD'; GRANT REPLICATION SLAVE ON *.* TO 'REPLICATION_USER'@'%';
- Se você estiver começando com um novo banco de dados, crie o mesmo banco de dados e as mesmas tabelas
nas instâncias principal e de réplica. Por exemplo:
CREATE DATABASE test; USE test; CREATE TABLE replica_test (id SERIAL PRIMARY KEY, data text); INSERT INTO replica_test (data) VALUES ('apple'), ('banana'), ('cherry');
- Se você já tiver um banco de dados na instância principal, precisará criar o mesmo na réplica. Para fazer isso, exporte o banco de dados da instância principal para um bucket do Cloud Storage e importe-o para a réplica. Saiba mais sobre como exportar dados do Cloud SQL para um arquivo dump SQL no Cloud Storage.
Configurar a réplica externa
Aviso: este procedimento substitui todos os dados hospedados em um banco de dados do MySQL na réplica, incluindo usuários e senhas, pelas configurações e dados da instância principal.-
Na máquina que hospeda a réplica, sugira a nova instância externa do MySQL
com o arquivo de exportação criado pela instância principal.
Por exemplo, o comando a seguir carrega um arquivo exportado chamado
mydump.sql
:mysql --user=root --password < mydump.sql
- Determine o ID do servidor desse par réplica-principal.
O ID do servidor é um valor numérico (por exemplo, "3") que deve ser exclusivo em toda a configuração da réplica externa. Cada réplica precisa ter um ID do servidor exclusivo.
- Adicione as seguintes opções ao arquivo de opções
my.cnf
da réplica:[mysqld] server-id=[SERVER_ID] gtid_mode=ON enforce_gtid_consistency=ON log_slave_updates=ON replicate-ignore-db=mysql binlog-format=ROW log_bin=mysql-bin expire_logs_days=1 read_only=ON
Para mais informações sobre opções de replicação do MySQL, consulte Replicação e opções de geração de registros binários.
- Reinicie o processo
mysqld
para fazer com que o arquivo de configuração seja lido. - Em um cliente
mysql
na réplica, digite o seguinte comando:CHANGE MASTER TO MASTER_HOST='MASTER_IP_ADDRESS', MASTER_USER='REPLICATION_USER', MASTER_PASSWORD='REPLICATION_PASSWORD', MASTER_AUTO_POSITION=1;
- Inicie a replicação na réplica:
START SLAVE;
Confirme o status da replicação:
SHOW SLAVE STATUS\G;
Caso você veja "Espera pelo envio do evento pelo mestre", a replicação está funcionando.
Como rebaixar a instância primária de uma réplica externa
Quando você tem uma instância do Cloud SQL com uma réplica externa, é possível reverter a configuração, o que faz com que estas alterações ocorram:
- A réplica externa se torna a nova instância principal.
- A instância do Cloud SQL se torna uma réplica de leitura, sendo replicada a partir do servidor que anteriormente era a réplica externa, agora chamado de servidor do banco de dados de origem.
Para reverter a configuração da réplica externa:
-
Crie uma instância de representação de origem.
Esta instância representará o servidor de banco de dados de origem para a réplica do Cloud SQL após a conclusão da operação de rebaixamento.
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{ "name": "SOURCE_REPRESENTATION_NAME", "region": "REGION", "databaseVersion": "EXTERNAL_SERVER_DATABASE_VERSION", "onPremisesConfiguration": { "hostPort": "EXTERNAL_SERVER_IP:EXTERNAL_SERVER_PORT" } }' \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances
Use a região em que você quer que sua réplica do Cloud SQL resida.
Inicie o processo de rebaixamento.
Como essa chamada de API requer que você forneça informações confidenciais, é necessário usar um arquivo JSON para fornecer seus dados a cURL, em vez de fornecê-los na linha de comando.
Crie o arquivo de dados:
{ "demoteMasterContext": { "replicaConfiguration": { "mysqlReplicaConfiguration": { "username": "REPLICATION_USERNAME", "password": "PASSWORD", "caCertificate": "EXTERNAL_SERVER_CA", "clientCertificate": "CLIENT_CERT", "clientKey": "PRIVATE_KEY" } }, "masterInstanceName": "SOURCE_REPRESENTATION_NAME", }, }
Em seguida, chame a API.
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @PATH_TO_DATA_FILE \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_NAME/demoteMaster
Para mais informações sobre suas opções para SSL/TLS, consulte Opções de SSL/TLS. Para mais informações sobre as propriedades usadas pelo objeto
replicaConfiguration
, consulte Como replicar a partir de um servidor externo.-
Aguarde a réplica externa concluir todas as transações pendentes da instância principal.
Quando a réplica alcança a principal, o comando
SHOW SLAVE STATUS
mostraSeconds Behind Master
como 0, e o valorExecuted_Gtid_Set
será idêntico entre a réplica externa e a instância principal do Cloud SQL. Use o cliente
mysql
para interromper a replicação na réplica externa:STOP SLAVE RESET SLAVE ALL
Aguarde até que a instância do Cloud SQL comece a replicar a partir do servidor externo, que agora é o servidor de banco de dados de origem.
A execução do comando
SHOW SLAVE STATUS
na instância do Cloud SQL fornece o status de replicação.-
Quando a instância do Cloud SQL estiver sendo replicada do
servidor de banco de dados de origem, defina a sinalização
read_only
no servidor de banco de dados de origem comooff
e atualize seus aplicativos para apontar para o servidor de banco de dados de origem.
Resolver problemas
Problema | Solução de problemas |
---|---|
Mensagem de erro: The slave is connecting ... master has purged
binary logs containing GTIDs that the slave requires |
A instância principal do Cloud SQL tem backups automáticos e registros
binários, e a recuperação pontual está ativada. Por isso, ela precisa ter registros suficientes
para que a réplica possa acompanhar. No entanto, nesse caso, embora os registros binários existam, a réplica não sabe em qual linha começar a leitura.
Crie um novo arquivo dump usando as configurações de sinalização corretas e configure a réplica externa usando esse arquivo.
|
A seguir
- Saiba como gerenciar réplicas.
- Saiba mais sobre requisitos e práticas recomendadas para a configuração da réplica externa.
- Saiba mais sobre replicação MySQL.
- Saiba mais sobre opções de replicação.
- Saiba mais sobre como verificar o status da replicação.
- Saiba mais sobre como replicar a partir de um servidor externo.