Esta página descreve o processo de configuração da replicação quando você tem um arquivo dump criado a partir do servidor externo.
É necessário concluir todas as etapas nesta página. Quando terminar, você pode administrar e monitorar a instância de representação de origem da mesma maneira que faria com qualquer outra instância do Cloud SQL.
Antes de começar
Antes de começar, configure o servidor externo, crie a instância de representação de origem e configure o Cloud SQL réplica.
Atualizar permissões para o usuário da replicação
O usuário de replicação no servidor externo está configurado para
aceitar conexões de qualquer host (%
). Atualize essa conta de usuário
para que ela seja usada somente com a réplica do Cloud SQL.
Abra um terminal no servidor externo e digite estes comandos:
Cliente MySQL
UPDATE mysql.user SET Host='NEW_HOST' WHERE Host='OLD_HOST' AND User='USERNAME'; GRANT REPLICATION SLAVE, EXECUTE ON *.* TO 'GCP_USERNAME'@'HOST'; FLUSH PRIVILEGES;
exemplo
UPDATE mysql.user SET Host='192.0.2.0' WHERE Host='%' AND User='replicationUser'; GRANT REPLICATION SLAVE, EXECUTE ON *.* TO 'gcp_user'@'gmail.com'; FLUSH PRIVILEGES;
Propriedade | Descrição |
---|---|
NEW_HOST | Especifique o IP de saída da réplica do Cloud SQL. |
OLD_HOST | O valor atual atribuído a Host que você quer alterar. |
USERNAME | A conta do usuário de replicação no servidor externo. |
GCP_USERNAME | O nome de usuário da conta de usuário do Google Cloud Platform (GCP). |
HOST | Nome do host da conta de usuário do Google Cloud Platform (GCP). |
Verificar as configurações de replicação
Após a conclusão da configuração, verifique se a réplica do Cloud SQL pode ser replicada do servidor externo.
Primeiro, verifique se as configurações de sincronização externa estão corretas. Para fazer isso, use os comandos abaixo para verificar:
- Conectividade entre a réplica do Cloud SQL e o servidor externo
- Privilégios de usuário de replicação
- Compatibilidade de versões
- A réplica do Cloud SQL ainda não está replicando
- Os registros binários estão ativados no servidor externo
- Um identificador global de transação (GTID, na sigla em inglês) está ativado.
Abra um terminal e digite estes comandos para verificar se as configurações de sincronização externa estão corretas:
curl
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "SYNC_MODE",
"skipVerification": "SKIP_VERIFICATION"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE/verifyExternalSyncSettings
exemplo
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "online",
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/myproject/instances/myreplica/verifyExternalSyncSettings
Propriedade | Descrição |
---|---|
SYNC_MODE | verifyExternalSyncSettings verifica se você pode manter a réplica do Cloud SQL e o servidor externo sincronizados após a configuração da replicação. Os modos de sincronização
incluem EXTERNAL_SYNC_MODE_UNSPECIFIED ,
ONLINE e OFFLINE . |
SKIP_VERIFICATION | Se é necessário pular a etapa de verificação antes de sincronizar seus dados. Recomendado somente se você já tiver verificado as configurações de replicação. |
PROJECT_ID | O ID do seu projeto no Google Cloud. |
REPLICA_INSTANCE | O código da sua réplica do Cloud SQL. |
Exportar seu banco de dados para um bucket do Cloud Storage
É possível preencher uma réplica do Cloud SQL com um arquivo mysqldump
localizado em um
bucket do Cloud Storage. Essas condições se aplicam:
- Use o utilitário
mysqldump
que acompanha o MySQL. - Enquanto
mysqldump
estiver em execução, não execute nenhuma operação DDL no servidor externo. Caso contrário, poderá haver inconsistências no arquivo de exportação.
Para exportar seu banco de dados para um bucket do Cloud Storage, siga estas etapas:
- No Google Cloud, crie um bucket do Cloud Storage.
- Abra um terminal usando um cliente que se conecta ao servidor de banco de dados externo e execute o comando a seguir.
mysqldump
mysqldump \ --host=EXTERNAL_HOST \ --port=EXTERNAL_PORT \ --user=USERNAME\ --password=PASSWORD \ --databases=DATABASE_LIST \ --hex-blob \ SOURCE_DATA \ --no-autocommit \ --default-character-set=utf8mb4 \ --single-transaction \ --set-gtid-purged=on \ ADD_DROP_TABLE \ ROUTINES \ COMPRESS \ GZIP \ | gcloud storage cp - gs://BUCKET/DUMP_FILENAME
exemplo
mysqldump \ --host=192.0.2.1 \ --port=3306 \ --user=replicationUser \ --password \ --databases guestbook journal \ --hex-blob \ --master-data=1 \ --no-autocommit \ --default-character-set=utf8mb4 \ --single-transaction \ --compress \ | gzip \ | gcloud storage cp - gs://replica-bucket/external-database.sql.gz
Propriedade | Descrição |
---|---|
EXTERNAL_HOST | O endereço IPv4 ou DNS do servidor externo. |
EXTERNAL_PORT | A porta do servidor externo.
Se o servidor externo estiver hospedado no Cloud SQL, isso será 3306 . |
USERNAME | O nome da conta de usuário da replicação ou da conta de usuário no servidor externo que tem permissões de leitura do banco de dados. |
PASSWORD | Senha do usuário de replicação. |
DATABASE_LIST | Lista separada por espaço com todos os bancos de dados do servidor externo, exceto os bancos de dados do sistema (sys , mysql , performance_schema e information_schema ). Use o comando SHOW DATABASES MySQL para listar seus bancos de dados. |
SOURCE_DATA | Se você estiver usando uma versão do MySQL anterior à 8.0.26,
use --master-data como o valor para esse parâmetro.
Para versões do MySQL 8.0.26 ou mais recentes,
defina o valor desse parâmetro como --source-data . |
ADD_DROP_TABLE | Se você quiser adicionar uma instrução DROP TABLE antes de cada
instrução CREATE TABLE , inclua --add-drop-table . |
ROUTINES | Se você quiser mostrar rotinas armazenadas, como procedimentos
e funções, inclua --routines na saída de bancos de dados
despejados. |
COMPRESS | Se você quiser compactar todas as informações enviadas entre a réplica do Cloud SQL e o servidor externo, use --compress . |
GZIP | Se você quiser compactar ainda mais o arquivo dump, use
| gzip . Se o banco de dados tiver dados que não
aceitam bem a compactação, como dados binários não compactáveis ou
imagens JPG, não use isso. |
BUCKET | O nome do bucket criado na Etapa 1 para conter o arquivo dump. |
DUMP_FILENAME | Um arquivo com esse nome é criado no seu bucket. Esse arquivo contém o conteúdo do banco de dados no servidor externo. |
Atualize a instância de representação de origem com o caminho do arquivo do bucket do Cloud Storage
A instância de representação de origem é uma instância do Cloud SQL que representa o servidor do banco de dados de origem para a réplica do Cloud SQL. Ela é visível no console do Google Cloud e aparece da mesma forma que uma instância normal do Cloud SQL, mas não contém dados, não requer configuração ou manutenção e não afeta o faturamento.
O arquivo source.json
contém informações sobre a instância de representação de origem.
REST
{ "name": "PRIMARY_INSTANCE_NAME", "region": "REGION_NAME", "databaseVersion": "DB_NAME_AND_VERSION", "onPremisesConfiguration": { "hostPort": "IP_ADDRESS_AND_PORT", "username": "USERNAME", "password": "PASSWORD" }, "dumpFilePath" :"DUMP_FILE_PATH" }
exemplo
{ "name": "cloudsql-source-instance", "region": "us-central1", "databaseVersion": "MYSQL_5_7", "onPremisesConfiguration": { "hostPort": "192.0.2.0:3306", "username": "replicationUser", "password": "486#@%*@" }, "dumpFilePath" :"gs://replica-bucket/source-database.sql.gz" }
Propriedade | Descrição |
---|---|
PRIMARY_INSTANCE_NAME | O nome da instância do Cloud SQL associada à instância de representação de origem. |
REGION_NAME | O nome da região atribuída à instância de representação de origem. |
DB_NAME_AND_VERSION | O nome e o número da versão do banco de dados associado à instância de representação de origem. |
IP_ADDRESS_AND_PORT | O endereço IP e o número da porta reservados para a instância de representação de origem. |
USERNAME | O nome de usuário da instância de representação de origem. |
PASSWORD | A senha da instância de representação de origem. |
DUMP_FILE_PATH | O caminho do arquivo dump que contém o conteúdo do banco de dados no servidor externo. |
Depois de configurar a réplica do Cloud SQL, você precisa atualizar sua instância de representação de origem com o caminho do arquivo do bucket do Cloud Storage.
REST
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @JSON_PATH \ -X PATCH \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/SOURCE_REPRESENTATION_INSTANCE
exemplo
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @./source.json \ -X PATCH \ https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/cloudsql-source-instance
Propriedade | Descrição |
---|---|
JSON_PATH | O caminho do arquivo JSON armazenado no bucket do Cloud Storage.
Esse arquivo contém dados sobre a instância de representação
de origem. |
PROJECT_ID | O ID do seu projeto no Google Cloud. |
SOURCE_REPRESENTATION_INSTANCE | O nome da instância de representação de origem. |
Iniciar replicação no servidor externo
Depois de verificar se é possível replicar usando o servidor externo, você estará pronto para executar a replicação.
Durante o processo de importação inicial, não execute nenhuma operação DDL no servidor externo. Isso pode causar inconsistências durante a importação. Após a conclusão do processo de importação, a réplica usará os registros binários no servidor externo para alcançar o estado atual desse servidor.
Abra um terminal, faça login usando gcloud
e digite o comando curl
para
replicar a partir do servidor externo.
REST
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{ "syncMode": "SYNC_MODE", "skipVerification": "SKIP_VERIFICATION" }' \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE/startExternalSync
exemplo
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{ "syncMode": "online", "skipVerification": false }' \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/replica-instance/startExternalSync
Propriedade | Descrição |
---|---|
SYNC_MODE | Verifica se é possível manter a réplica do Cloud SQL e o servidor externo sincronizados após a configuração da replicação. |
SKIP_VERIFICATION | Se é necessário pular a etapa de verificação antes de sincronizar seus dados. Recomendado somente se você já tiver verificado as configurações de replicação. |
PROJECT_ID | O ID do seu projeto no Google Cloud. |
REPLICA_INSTANCE | O código da sua réplica do Cloud SQL. |
Limpar o armazenamento
Se você tiver replicado com um arquivo em um bucket, remova esse arquivo e o bucket. Consulte a documentação do Cloud Storage referente a exclusão de objetos e exclusão de buckets.
Continuar a replicação
Depois de iniciar a replicação a partir do servidor externo, é necessário monitorar a replicação e concluir a migração. Para saber mais, consulte Como monitorar a replicação.
Resolver problemas
Problema | Solução de problemas |
---|---|
Lost connection to MySQL server during query when dumping table . |
A origem pode ter ficado indisponível ou o dump continha pacotes
muito grandes.
Verifique se a instância principal externa está disponível para conexão. Também é possível modificar os valores das sinalizações net_read_timeout e net_write_timeout na instância de origem para interromper o erro. Para mais informações sobre os valores permitidos para essas sinalizações, consulte Configurar sinalizações do banco de dados. Para saber mais sobre como usar sinalizações |
A migração inicial dos dados foi bem-sucedida, mas nenhum dado está sendo replicado. | Uma possível causa raiz pode ser sinalizações de replicação definidas pelo banco de dados
de origem, o que faz com que algumas ou todas as alterações do banco de dados não sejam
replicadas.
Verifique se as sinalizações de replicação, como Execute o comando |
A migração inicial de dados foi bem-sucedida, mas a replicação de dados deixa de funcionar após um tempo. | O que tentar
|
mysqld check failed: data disk is full . |
O disco de dados da instância da réplica está cheio.
Aumente o tamanho do disco da instância de réplica. Aumente o tamanho do disco manualmente ou ative o aumento automático de armazenamento. |
Analisar os registros de replicação
Ao verificar as configurações de replicação, os registros são gerados.
Para visualizar esses registros, siga estas etapas:
Acesse o visualizador de registros no console do Google Cloud:
- Selecione a réplica do Cloud SQL na lista suspensa Instância.
- Selecione o arquivo de registro
replication-setup.log
.
Se a réplica do Cloud SQL não conseguir se conectar ao servidor externo, confirme o seguinte:
- Qualquer firewall no servidor do banco de dados de origem é configurado para permitir conexões usando o endereço IP de saída da réplica do Cloud SQL.
- Sua configuração SSL/TLS está correta.
- Seu usuário, host e senha de replicação estão corretos.
A seguir
- Saiba mais sobre como atualizar uma instância.
- Saiba mais sobre o gerenciamento de réplicas.
- Saiba mais sobre como monitorar instâncias.
- Saiba como promover sua réplica do Cloud SQL para promover a réplica a uma instância independente e parar de replicar do servidor externo.