Esta página descreve o processo de configuração da replicação quando tem um ficheiro de despejo que criou a partir do seu servidor externo.
Tem de concluir todos os passos nesta página. Quando terminar, pode administrar e monitorizar a instância de representação de origem da mesma forma que faria com qualquer outra instância do Cloud SQL.
Antes de começar
Antes de começar, deve ter configurado o servidor externo, criado a instância de representação de origem e configurado a réplica do Cloud SQL.
Atualize as autorizações do utilizador de replicação
O utilizador da replicação no servidor externo está configurado para aceitar ligações de qualquer anfitrião (%
). Deve atualizar esta conta de utilizador para que só possa ser usada com a réplica do Cloud SQL.
Abra um terminal no servidor externo e introduza 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 quer alterar. |
USERNAME | A conta de utilizador de replicação no servidor externo. |
GCP_USERNAME | O nome de utilizador da conta de utilizador da Trusted Cloud by S3NS plataforma (GCP). |
HOST | O nome do anfitrião da conta de utilizador da Trusted Cloud by S3NS plataforma (GCP). |
Valide as definições de replicação
Após a conclusão da configuração, certifique-se de que a réplica do Cloud SQL consegue replicar a partir do servidor externo.
Primeiro, certifique-se de que as definições de sincronização externa estão corretas. Para o fazer, use os comandos abaixo para validar:
- Conetividade entre a réplica do Cloud SQL e o servidor externo
- Privilégios do utilizador de replicação
- Compatibilidade de versões
- A réplica do Cloud SQL ainda não está a ser replicada
- Os registos binários estão ativados no servidor externo
- Um identificador de transação global (GTID) está ativado
Abra um terminal e introduza estes comandos para verificar se as definiçõ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 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 deve ou não ignorar o passo de validação incorporado antes de sincronizar os seus dados. Recomendado apenas se já tiver validado as definições de replicação. |
PROJECT_ID | O ID do seu projeto em Trusted Cloud. |
REPLICA_INSTANCE | O ID da sua réplica do Cloud SQL. |
Exporte a sua base de dados para um contentor do Cloud Storage
Pode preencher uma réplica do Cloud SQL com um ficheiro mysqldump
localizado num contentor do Cloud Storage. Aplicam-se as seguintes condições:
- Tem de usar o utilitário
mysqldump
incluído no MySQL. - Enquanto o
mysqldump
estiver em execução, não realize nenhuma operação DDL no servidor externo. Esta ação pode causar inconsistências no ficheiro de exportação.
Para exportar a sua base de dados para um contentor do Cloud Storage, siga estes passos:
- No Trusted Cloud, crie um contentor do Cloud Storage.
- Abra um terminal com um cliente que se ligue ao servidor de base de dados externo e execute o seguinte comando.
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 alojado no Cloud SQL,
esta é 3306 . |
USERNAME | O nome da conta de utilizador de replicação ou da conta de utilizador no servidor externo que tem autorizações de leitura da base de dados. |
PASSWORD | Palavra-passe do utilizador de replicação. |
DATABASE_LIST | Lista separada por espaços de todas as bases de dados no servidor externo, exceto as bases de dados do sistema (sys , mysql , performance_schema e information_schema ). Use o comando SHOW DATABASES MySQL para listar as suas bases de dados. |
SOURCE_DATA | Se estiver a usar uma versão do MySQL anterior à 8.0.26,
use --master-data como valor para este parâmetro.
Para versões do MySQL 8.0.26 ou superiores,
defina o valor deste parâmetro como --source-data . |
ADD_DROP_TABLE | Se quiser adicionar uma declaração DROP TABLE antes de cada declaração CREATE TABLE , inclua --add-drop-table . |
ROUTINES | Se quiser mostrar rotinas armazenadas, como procedimentos e funções, na saída de bases de dados transferidas, inclua --routines . |
COMPRESS | Se quiser comprimir todas as informações enviadas entre a réplica do Cloud SQL e o servidor externo, use --compress . |
GZIP | Se quiser comprimir ainda mais o ficheiro de despejo, use
| gzip . Se a sua base de dados contiver dados que não são bem comprimidos, como dados binários não comprimíveis ou imagens JPG, não use esta opção. |
BUCKET | O nome do contentor que criou no passo 1 para conter o ficheiro de despejo. |
DUMP_FILENAME | É criado um ficheiro com este nome no seu contentor. Este ficheiro contém o conteúdo da base de dados no seu servidor externo. |
Atualize a instância de representação de origem com o caminho do ficheiro do contentor do Cloud Storage
A instância de representação de origem é uma instância do Cloud SQL que representa o servidor de base de dados de origem para a réplica do Cloud SQL. É visível na Trusted Cloud by S3NS consola e aparece da mesma forma que uma instância normal do Cloud SQL, mas não contém dados, não requer configuração nem manutenção e não afeta a faturação.
O ficheiro 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 da origem. |
REGION_NAME | O nome da região atribuída à instância de representação da origem. |
DB_NAME_AND_VERSION | O nome e o número da versão da base de dados associada à instância de representação da origem. |
IP_ADDRESS_AND_PORT | O endereço IP e o número da porta reservados para a instância de representação da origem. |
USERNAME | O nome de utilizador da instância de representação da origem. |
PASSWORD | A palavra-passe da instância de representação da origem. |
DUMP_FILE_PATH | O caminho do ficheiro de despejo que contém o conteúdo da base de dados no seu servidor externo. |
Depois de configurar a réplica do Cloud SQL, tem de atualizar a instância de representação de origem com o caminho do ficheiro do contentor 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 ficheiro JSON armazenado no contentor do Cloud Storage.
Este ficheiro contém dados sobre a instância de representação da origem. |
PROJECT_ID | O ID do seu projeto em Trusted Cloud. |
SOURCE_REPRESENTATION_INSTANCE | O nome da instância de representação da origem. |
Inicie a replicação no servidor externo
Depois de confirmar que consegue replicar a partir do servidor externo, está tudo pronto para realizar a replicação.
Durante o processo de importação inicial, não execute nenhuma operação DDL no servidor externo. Se o fizer, pode causar inconsistências durante a importação. Após a conclusão do processo de importação, a réplica usa os registos binários no servidor externo para alcançar o estado atual do servidor externo.
Abra um terminal, inicie sessão com gcloud
e, em seguida, introduza o comando curl
para fazer a replicação 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 consegue manter a réplica do Cloud SQL e o servidor externo sincronizados após a configuração da replicação. |
SKIP_VERIFICATION | Se deve ou não ignorar o passo de validação incorporado antes de sincronizar os seus dados. Recomendado apenas se já tiver validado as definições de replicação. |
PROJECT_ID | O ID do seu projeto em Trusted Cloud. |
REPLICA_INSTANCE | O ID da sua réplica do Cloud SQL. |
Limpe o seu armazenamento
Se fez a replicação a partir de um ficheiro num contentor, pode remover este ficheiro e o contentor. Consulte a documentação do Cloud Storage para saber como eliminar objetos e eliminar contentores.
Continuar com a replicação
Depois de iniciar a replicação a partir do servidor externo, tem de monitorizar a replicação e, em seguida, concluir a migração. Para saber mais, consulte o artigo Monitorizar a replicação.
Resolver problemas
Problema | Resolução de problemas |
---|---|
Lost connection to MySQL server during query when dumping table . |
A origem pode ter ficado indisponível ou o despejo continha pacotes
demasiado grandes.
Certifique-se de que o dispositivo principal externo está disponível para ligação. Também pode modificar os valores das flags net_read_timeout e net_write_timeout na instância de origem para parar o erro. Para mais informações sobre os valores permitidos para estas flags, consulte o artigo Configure flags da base de dados. Para saber mais sobre a utilização de flags |
A migração de dados inicial foi bem-sucedida, mas não está a ser feita a replicação de dados. | Uma possível causa principal pode ser a base de dados de origem ter definido flags de replicação que resultam na não replicação de algumas ou todas as alterações da base de dados.
Certifique-se de que as flags de replicação, como Execute o comando |
A migração de dados inicial foi bem-sucedida, mas a replicação de dados deixa de funcionar após algum tempo. | Opções que pode testar:
|
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 da réplica. Pode aumentar manualmente o tamanho do disco ou ativar o aumento automático do armazenamento. |
Reveja os registos de replicação
Quando valida as definições de replicação, são gerados registos.
Pode ver estes registos através dos seguintes passos:
Aceda ao visualizador de registos na Trusted Cloud consola.
- Selecione a réplica do Cloud SQL no menu pendente Instância.
- Selecione o ficheiro de registo
replication-setup.log
.
Se a réplica do Cloud SQL não conseguir estabelecer ligação ao servidor externo, confirme o seguinte:
- Qualquer firewall no servidor externo está configurada para permitir ligações a partir do endereço IP de saída da réplica do Cloud SQL.
- A sua configuração SSL/TLS está correta.
- O utilizador, o anfitrião e a palavra-passe da replicação estão corretos.
O que se segue?
- Saiba como atualizar uma instância.
- Saiba como gerir réplicas.
- Saiba mais sobre a monitorização de instâncias.
- Saiba como promover a sua réplica do Cloud SQL para promover a réplica a uma instância autónoma e parar a replicação a partir do servidor externo.