Esta página descreve como configurar e usar uma importação gerenciada de dados ao replicar de um servidor externo para o Cloud SQL.
Você deve concluir todas as etapas desta página. Ao concluir, você poderá administrar e monitorar 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, conclua estas etapas:
Verifique suas configurações de replicação
Após a conclusão da configuração, certifique-se de que a réplica do Cloud SQL possa ser replicada do servidor externo.
As seguintes configurações de sincronização externa devem estar corretas.
- 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á sendo replicada
Para verificar essas configurações, abra um terminal do Cloud Shell e digite os seguintes comandos:
enrolar
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",
"syncParallelLevel": "SYNC_PARALLEL_LEVEL",
"selectedObjects": "SELECTED_OBJECTS"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_ID/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",
"syncParallelLevel": "optimal",
"selectedObjects":[{"database":"db1"}, {"database":"db2"}]
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/myproject/instances/myreplica/verifyExternalSyncSettings
Essas chamadas retornam uma lista do tipo sql#externalSyncSettingErrorList
.
Se a lista estiver vazia, não há erros. Uma resposta sem erros aparece assim:
{ "kind": "sql#externalSyncSettingErrorList" }
Propriedade | Descrição |
---|---|
SYNC_MODE | Certifique-se de que você consiga 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 . |
SYNC_PARALLEL_LEVEL | Verifique a configuração que controla a velocidade com que os dados das tabelas de um banco de dados são transferidos. Os seguintes valores estão disponíveis:
Observação: O valor padrão para este parâmetro é |
SELECTED_OBJECTS | Uma lista separada por vírgulas de bancos de dados que você está migrando da instância de representação de origem para a instância de destino do Cloud SQL. Se você não usar esse parâmetro ou fornecer uma lista vazia como valor para o parâmetro, todos os bancos de dados serão migrados da origem para o destino. |
PROJECT_ID | A identificação do seu Google Cloud projeto. |
REPLICA_INSTANCE_ID | O ID da sua réplica do Cloud SQL. |
Atualizar uma instância de representação de origem
Para atualizar os bancos de dados que você deseja migrar da instância de representação de origem para a instância de destino do Cloud SQL, atualize a lista de nomes de bancos de dados associados ao parâmetro selectedObjects
. Se você não usar esse parâmetro ou fornecer uma lista vazia como valor para o parâmetro, todos os bancos de dados serão migrados da origem para o destino.
fonte.json
{ "name": "SOURCE_NAME", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "onPremisesConfiguration": { "selectedObjects": "SELECTED_OBJECTS", "username": "USERNAME", "password": "PASSWORD" } }
exemplo
// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TLS
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "POSTGRES_9_6",
"onPremisesConfiguration": {
"selectedObjects":[{"database":"db1"}, {"database":"db3"}],
"username": "newReplicationUser",
"password": "525#@%*@"
}
}
Propriedade | Descrição |
---|---|
SOURCE_NAME | O nome da instância de representação de origem. |
REGION | A região onde reside a instância de representação de origem. |
DATABASE_VERSION | A versão do banco de dados em execução no seu servidor externo. As opções são POSTGRES_9_6 , POSTGRES_10 , POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 , POSTGRES_16 ou POSTGRES_17 . |
SELECTED_OBJECTS | Uma lista atualizada, separada por vírgulas, de bancos de dados que você está migrando da instância de representação de origem para a instância de destino do Cloud SQL. |
USERNAME | A conta de usuário de replicação no servidor externo. |
PASSWORD | A senha da conta. |
Em seguida, para modificar a instância de representação de origem no Cloud SQL, abra um terminal do Cloud Shell e digite os seguintes comandos:
enrolar
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_NAME
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 para o arquivo JSON que contém os dados de solicitação para o servidor externo. |
PROJECT_ID | A identificação do seu Google Cloud projeto. |
SOURCE_NAME | O nome da instância de representação de origem. |
Iniciar replicação no servidor externo
Após verificar se você consegue replicar a partir do servidor externo, inicie a replicação. A velocidade de execução da replicação para o processo de importação inicial é de até 500 GB por hora. No entanto, essa velocidade pode variar de acordo com a camada da máquina, o tamanho do disco de dados, a taxa de transferência da rede e a natureza do seu banco de dados.
enrolar
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",
"syncParallelLevel": "SYNC_PARALLEL_LEVEL"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_ID/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",
"syncParallelLevel": "optimal"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/replica-instance/startExternalSync
Propriedade | Descrição |
---|---|
SYNC_MODE | Verifique se você consegue manter a réplica do Cloud SQL e o servidor externo sincronizados após a replicação ser configurada. |
SKIP_VERIFICATION | Se você deseja pular a etapa de verificação integrada antes de sincronizar seus dados. Este parâmetro é recomendado somente se você já tiver verificado suas configurações de replicação . |
SYNC_PARALLEL_LEVEL | Forneça uma configuração que controle a velocidade com que os dados das tabelas de um banco de dados são transferidos. Os seguintes valores estão disponíveis:
Observação: O valor padrão para este parâmetro é |
PROJECT_ID | A identificação do seu Google Cloud projeto. |
REPLICA_INSTANCE_ID | O ID da sua réplica do Cloud SQL. |
Monitorar a migração
Após iniciar a replicação a partir do servidor externo, você precisará monitorá-la. Para saber mais, consulte Monitoramento de replicação . Você poderá então concluir a migração.
Solução de problemas
Considere as seguintes opções de solução de problemas:
Emitir | Solução de problemas |
---|---|
A réplica de leitura não iniciou a replicação na criação. | Provavelmente há um erro mais específico nos arquivos de log. Inspecione os logs no Cloud Logging para encontrar o erro real. |
Não é possível criar réplica de leitura - erro invalidFlagValue. | Um dos sinalizadores na solicitação é inválido. Pode ser um sinalizador que você forneceu explicitamente ou um que foi definido com um valor padrão. Primeiro, verifique se o valor do sinalizador Se o sinalizador |
Não é possível criar réplica de leitura - erro desconhecido. | Provavelmente há um erro mais específico nos arquivos de log. Inspecione os logs no Cloud Logging para encontrar o erro real. Se o erro for: |
O disco está cheio. | O tamanho do disco da instância primária pode ficar cheio durante a criação da réplica. Edite a instância primária para atualizá-la para um tamanho de disco maior. |
O espaço em disco aumenta significativamente. | Um slot que não é usado ativamente para rastrear dados faz com que o PostgreSQL retenha segmentos WAL indefinidamente, aumentando o espaço em disco. Se você usar os recursos de replicação lógica e decodificação do Cloud SQL, os slots de replicação serão criados e descartados automaticamente. Slots de replicação não utilizados podem ser detectados consultando a visualização do sistema pg_replication_slots e filtrando pela coluna active . Slots não utilizados podem ser descartados para remover segmentos WAL usando o comando pg_drop_replication_slot . |
A instância de réplica está usando muita memória. | A réplica usa memória temporária para armazenar em cache operações de leitura solicitadas com frequência, o que pode fazer com que ela use mais memória do que a instância primária. Reinicie a instância de réplica para recuperar o espaço de memória temporário. |
A replicação foi interrompida. | O limite máximo de armazenamento foi atingido e o aumento automático de armazenamento não está habilitado. Edite a instância para habilitar |
O atraso na replicação é consistentemente alto. | A carga de gravação é muito alta para a réplica suportar. O atraso na replicação ocorre quando a thread SQL em uma réplica não consegue acompanhar a thread de E/S. Alguns tipos de consultas ou cargas de trabalho podem causar atrasos temporários ou permanentes na replicação de um determinado esquema. Algumas das causas típicas de atraso na replicação são:
Algumas soluções possíveis incluem:
|
Erros ao reconstruir índices no PostgreSQL 9.6. | Você recebe um erro do PostgreSQL informando que precisa reconstruir um índice específico. Isso só pode ser feito na instância primária. Se você criar uma nova instância de réplica, logo receberá o mesmo erro novamente. Índices de hash não são propagados para réplicas em versões do PostgreSQL anteriores à 10. Se você precisar usar índices de hash, atualize para o PostgreSQL 10+. Caso contrário, se também quiser usar réplicas, não use índices de hash no PostgreSQL 9.6. |
A consulta na instância primária está sempre em execução. | Após criar uma réplica, espera-se que a consulta SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' seja executada continuamente na sua instância primária. |
A criação da réplica falha devido ao tempo limite. | Transações não confirmadas de longa duração na instância primária podem causar falha na criação de réplicas de leitura. Recrie a réplica após interromper todas as consultas em execução. |
Se a instância primária e a réplica tiverem tamanhos de vCPU diferentes , poderá haver problemas de desempenho da consulta porque o otimizador de consulta leva em consideração os tamanhos de vCPU. | Para resolver esse problema, siga estas etapas:
Se for uma consulta específica, modifique-a. Por exemplo, você pode alterar a ordem das junções para ver se obtém melhor desempenho. |
Revise seus logs de replicação
Quando você verifica suas configurações de replicação , logs são produzidos.
Você pode visualizar esses logs seguindo estas etapas:
Vá para o Visualizador de Logs no Google Cloud console.
- Selecione a réplica do Cloud SQL no menu suspenso Instância .
- Selecione o arquivo de log
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 externo é configurado para permitir conexões do 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.
O que vem a seguir
- Saiba mais sobre como atualizar uma instância .
- Saiba mais sobre como gerenciar réplicas .
- Saiba mais sobre monitoramento de instâncias .
- Saiba mais sobre como promover sua réplica do Cloud SQL .