Esta página descreve como configurar e usar uma importação gerida para dados quando faz a replicação de um servidor externo para o Cloud SQL.
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, conclua estes passos:
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.
As seguintes definições de sincronização externa têm de estar corretas.
- 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
Para validar estas definições, abra um terminal do Cloud Shell e introduza os seguintes comandos:
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",
"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
Estas chamadas devolvem uma lista do tipo sql#externalSyncSettingErrorList
.
Se a lista estiver vazia, não existem erros. Uma resposta sem erros é apresentada da seguinte forma:
{ "kind": "sql#externalSyncSettingErrorList" }
Propriedade | Descrição |
---|---|
SYNC_MODE | Certifique-se de que consegue 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 definição que controla a velocidade à qual os dados das tabelas de uma base de dados são transferidos. Estão disponíveis os seguintes valores:
Nota: o valor predefinido deste parâmetro é |
SELECTED_OBJECTS | Uma lista de objetos separados por vírgulas que especifica as bases de dados que está a migrar da instância de representação de origem para a instância do Cloud SQL de destino. Se não usar este parâmetro ou fornecer uma lista vazia como valor do parâmetro, todas as bases de dados são migradas da origem para o destino. |
PROJECT_ID | O ID do seu Google Cloud projeto. |
REPLICA_INSTANCE_ID | O ID da sua réplica do Cloud SQL. |
Atualize uma instância de representação de origem
Para atualizar as bases de dados que quer migrar da instância de representação de origem para a instância do Cloud SQL de destino, atualize a lista de nomes de bases de dados associados ao parâmetro selectedObjects
. Se não usar este parâmetro ou fornecer uma lista vazia como o valor do parâmetro, todas as bases de dados são migradas da origem para o destino.
source.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 da origem. |
REGION | A região onde a instância de representação de origem reside. |
DATABASE_VERSION | A versão da base 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 de objetos atualizada separados por vírgulas, que especifica as bases de dados das quais está a migrar da instância de representação de origem para a instância do Cloud SQL de destino. |
USERNAME | A conta de utilizador de replicação no servidor externo. |
PASSWORD | A palavra-passe da conta. |
Em seguida, para modificar a instância de representação de origem no Cloud SQL, abra um terminal do Cloud Shell e introduza os seguintes comandos:
curl
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 ficheiro JSON que contém os dados do pedido para o servidor externo. |
PROJECT_ID | O ID do seu Google Cloud projeto. |
SOURCE_NAME | O nome da instância de representação da origem. |
Inicie a replicação no servidor externo
Depois de confirmar que pode fazer a replicação 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, esta velocidade pode variar consoante o nível da máquina, o tamanho do disco de dados, o débito da rede e a natureza da sua base de dados.
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",
"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 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 ignorar o passo de validação incorporado antes de sincronizar os seus dados. Este parâmetro só é recomendado se já tiver validado as definições de replicação. |
SYNC_PARALLEL_LEVEL | Fornecer uma definição que controla a velocidade à qual os dados das tabelas de uma base de dados são transferidos. Estão disponíveis os seguintes valores:
Nota: o valor predefinido deste parâmetro é |
PROJECT_ID | O ID do seu Google Cloud projeto. |
REPLICA_INSTANCE_ID | O ID da sua réplica do Cloud SQL. |
Monitorize a migração
Depois de iniciar a replicação a partir do servidor externo, tem de monitorizar a replicação. Para saber mais, consulte o artigo Monitorizar a replicação. Em seguida, pode concluir a migração.
Resolver problemas
Considere as seguintes opções de resolução de problemas:
Problema | Resolução de problemas |
---|---|
A réplica de leitura não começou a ser replicada na criação. | Provavelmente, existe um erro mais específico nos ficheiros de registo. Inspeccione os registos nos Registos na nuvem para encontrar o erro real. |
Não é possível criar uma réplica de leitura: erro invalidFlagValue. | Uma das flags no pedido é inválida. Pode ser uma flag que
forneceu explicitamente ou uma que foi definida para um valor predefinido.
Primeiro, verifique se o valor da flag Se a flag |
Não é possível criar uma réplica de leitura: erro desconhecido. | Provavelmente, existe um erro mais específico nos ficheiros de registo.
Inspeccione os registos nos
Registos na nuvem para encontrar o erro real.
Se o erro for: |
O disco está cheio. | O tamanho do disco da instância principal pode ficar cheio durante a criação da réplica. Edite a instância principal para a atualizar para um tamanho de disco maior. |
O espaço em disco aumenta significativamente. | Um espaço que não é usado ativamente para acompanhar dados faz com que o PostgreSQL mantenha os segmentos WAL indefinidamente, o que faz com que o espaço em disco aumente indefinidamente. Se usar as funcionalidades de replicação e descodificação lógica no Cloud SQL, os slots de replicação são criados e eliminados automaticamente. Pode detetar as ranhuras de replicação não usadas consultando a vista do sistema pg_replication_slots e filtrando pela coluna active . Pode eliminar as posições não usadas para remover segmentos WAL através do comando pg_drop_replication_slot .
|
A instância da réplica está a usar demasiada memória. | A réplica usa memória temporária para colocar em cache operações de leitura pedidas com frequência, o que pode fazer com que use mais memória do que a instância principal.
Reinicie a instância da 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 do armazenamento não está ativado.
Edite a instância para ativar a autorização |
O atraso de replicação é consistentemente elevado. | A carga de escrita é demasiado elevada para a réplica processar. O atraso de replicação ocorre quando o segmento SQL numa réplica não consegue acompanhar o segmento de E/S. Alguns tipos de consultas ou cargas de trabalho podem causar um atraso de replicação elevado temporário ou permanente para um determinado esquema. Algumas das causas típicas
do atraso na replicação são:
Algumas soluções possíveis incluem:
|
Erros ao recriar índices no PostgreSQL 9.6. | Recebe um erro do PostgreSQL a informar que tem de reconstruir um índice específico. Esta ação só pode ser realizada na instância principal. Se
criar uma nova instância de réplica, recebe novamente o mesmo erro em breve.
Os índices de hash
não são propagados para réplicas em versões do PostgreSQL inferiores a 10.
Se tiver de usar índices de hash, atualize para o PostgreSQL 10 ou superior. 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 principal está sempre em execução. | Depois de 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 principal.
|
A criação de réplicas falha devido ao limite de tempo. | As transações não comprometidas de longa duração na instância principal podem fazer com que a criação de réplicas de leitura falhe.
Recrie a réplica depois de parar todas as consultas em execução. |
Se a instância principal e a réplica tiverem tamanhos de vCPU diferentes, podem ocorrer problemas de desempenho das consultas, uma vez que o otimizador de consultas tem em conta os tamanhos de vCPU. |
Para resolver este problema, conclua os seguintes passos:
Se for uma consulta específica, modifique-a. Por exemplo, pode alterar a ordem das associações para ver se obtém um melhor desempenho. |
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 Google 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.