Nesta página, você verá como gerenciar réplicas de leitura. Essas operações incluem desativar e ativar a replicação, promover uma réplica, configurar a replicação paralela e verificar o status da replicação.
Para mais informações sobre como funciona a replicação, consulte Replicação no Cloud SQL.
Desativar replicação
Por padrão, uma réplica começa com a replicação ativada. No entanto, é possível desativar a replicação, por exemplo, para depurar ou analisar o estado de uma instância. Ao terminar, reative a replicação explicitamente. Desativar ou reativar a replicação não reinicia a instância da réplica.
Quando a replicação é desativada, isso não interrompe a instância da réplica: ela se torna uma instância somente leitura que não é mais replicada da instância principal. Você continuará sendo cobrado pela instância. Na réplica desativada, é possível reativar a replicação, excluir a réplica ou promovê-la a uma instância autônoma.
Para desativar a replicação:
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Selecione uma instância de réplica clicando no nome dela.
- Clique em Desativar replicação na barra de botões.
- Clique em OK.
gcloud
gcloud sql instances patch REPLICA_NAME \ --no-enable-database-replication
REST v1
Para executar esse comando cURL em um prompt de linha de comando, adquira um token de acesso. Basta usar o comando gcloud auth print-access-token. Use também o APIs Explorer na página "Instâncias: patch" para enviar a solicitação da API REST.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- replica-name: o nome da instância da réplica
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name
Corpo JSON da solicitação:
{ "settings": { "databaseReplicationEnabled": "False" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
REST v1beta4
Para executar esse comando cURL em um prompt de linha de comando, adquira um token de acesso. Basta usar o comando gcloud auth print-access-token. Use também o APIs Explorer na página "Instâncias: patch" para enviar a solicitação da API REST.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- replica-name: o nome da instância da réplica
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name
Corpo JSON da solicitação:
{ "settings": { "databaseReplicationEnabled": "False" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Ativar replicação
Se uma réplica não for replicada por muito tempo, ela demorará mais para alcançar a instância principal. Nesse caso, exclua a réplica e crie uma nova.
Para ativar a replicação:
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Selecione uma instância de réplica clicando no nome dela.
- Clique em Ativar replicação.
- Clique em OK.
gcloud
gcloud sql instances patch REPLICA_NAME \ --enable-database-replication
REST v1
Para executar esse comando cURL em um prompt de linha de comando, adquira um token de acesso. Basta usar o comando gcloud auth print-access-token. Use também o APIs Explorer na página "Instâncias: patch" para enviar a solicitação da API REST.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- replica-name: o nome da instância da réplica
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name
Corpo JSON da solicitação:
{ "settings": { "databaseReplicationEnabled": "True" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
REST v1beta4
Para executar esse comando cURL em um prompt de linha de comando, adquira um token de acesso. Basta usar o comando gcloud auth print-access-token. Use também o APIs Explorer na página "Instâncias: patch" para enviar a solicitação da API REST.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- replica-name: o nome da instância da réplica
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name
Corpo JSON da solicitação:
{ "settings": { "databaseReplicationEnabled": "True" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Promover uma réplica
Promover uma réplica de leitura interrompe a replicação e converte a instância em uma instância primária independente do Cloud SQL com recursos de leitura e gravação.
Quando promovidas, as réplicas de leitura são configuradas automaticamente com backups, mas não são configuradas automaticamente como instâncias de alta disponibilidade (HA, na sigla em inglês). É possível ativar a alta disponibilidade depois de promover a réplica, assim como faria para qualquer instância que não seja réplica. Configurar uma réplica de leitura para alta disponibilidade é feito da mesma maneira que em uma instância principal. Saiba mais sobre como configurar a instância para alta disponibilidade.
Antes de promover uma réplica de leitura, se a principal ainda estiver disponível e atendendo aos clientes, faça o seguinte:
- Interrompa todas as gravações na instância principal.
- Verifique o status de replicação da réplica. Siga as instruções na guia Cliente psql.
- Verifique se a réplica está replicando e aguarde até que o
atraso da replicação relatado pela
métrica
replay_lag
seja 0.
Caso contrário, uma instância recém-promovida pode não ter algumas transações confirmadas na instância principal.
Para promover uma réplica a uma instância autônoma:
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Selecione uma instância de réplica clicando no nome dela.
- Clique em Promover réplica.
- Clique em OK.
gcloud
gcloud sql instances promote-replica REPLICA_NAME
REST v1
Para executar esse comando cURL em um prompt de linha de comando, adquira um token de acesso. Basta usar o comando gcloud auth print-access-token. Use também o APIs Explorer na página "Instâncias: promoteReplica" para enviar a solicitação da API REST.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- replica-name: o nome da instância da réplica
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name/promoteReplica
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
REST v1beta4
Para executar esse comando cURL em um prompt de linha de comando, adquira um token de acesso. Basta usar o comando gcloud auth print-access-token. Use também o APIs Explorer na página "Instâncias: promoteReplica" para enviar a solicitação da API REST.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- replica-name: o nome da instância da réplica
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name/promoteReplica
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Confirme se a instância promovida está configurada corretamente. Em particular, configure a instância para alta disponibilidade, se necessário.
Verificar o status da replicação
Ao visualizar uma instância de réplica usando o Console do Google Cloud ou fazer login na instância usando um cliente de administração, você recebe detalhes sobre a replicação, incluindo o status e as métricas. Ao usar a CLI gcloud, você recebe um breve resumo da configuração de replicação.
Antes de verificar o status da replicação de uma instância de réplica do Cloud SQL,
use o comando gcloud sql instances describe
para exibir
o status da instância. Como resultado, é possível ver se a replicação está ativada
para a instância de réplica.
As métricas a seguir estão disponíveis para instâncias de réplica. Saiba mais sobre outras métricas disponíveis para todas as instâncias, incluindo instâncias que não são de réplica.
Métrica | Descrição |
---|---|
Estado de replicação ( cloudsql.googleapis.com ) |
Indica se a replicação está transmitindo registros ativamente da primária para a réplica. Valores possíveis:
Essa métrica mostrará
Para mais informações, consulte o Coletor de estatísticas e as Funções de administração do sistema (ambos em inglês) no Manual de referência do PostgreSQL. |
Lag de replicação ( cloudsql.googleapis.com ) |
O tempo que o estado da réplica está atrasando se comparado ao estado da instância principal. Essa é a diferença entre (1) a hora atual e (2) o carimbo de data/hora original em que a principal confirmou a transação que está sendo aplicada na réplica. Em especial, as gravações podem ser consideradas atrasadas, mesmo que tenham sido recebidas pela réplica, caso a réplica ainda não tenha aplicado a gravação ao banco de dados. Para réplicas em cascata, cada par de réplicas primárias é monitorado separadamente, e não há uma única métrica que produza o atraso completo (principal para réplica). Para saber mais, consulte Atraso de replicação. |
Bytes de atraso ( cloudsql.googleapis.com ) |
Informa o número de bytes pelo qual a réplica de leitura atrasa a primária. Quatro séries temporais são produzidas para cada réplica, mostrando o número de bytes no registro de gravação antecipada da primária que ainda não foi...
Essas métricas têm finalidades diferentes. por exemplo:
Essas métricas são calculadas comparando
|
Máx. de bytes de atraso ( cloudsql.googleapis.com ) |
Para uma réplica de uma instância primária externa, informa o atraso máximo de replicação (em bytes) em todos os bancos de dados que estão sendo replicados para essa instância. Para cada banco de dados, isso é definido como o número de bytes no registro de gravação antecipada da primária que não foram confirmados para serem recebidos pela réplica. Essa métrica é calculada por meio do envio de uma consulta à primária para comparar
o |
Para verificar o status da replicação:
Console
O Cloud SQL informa a
métrica Replication State
no
painel
padrão de monitoramento do Cloud SQL.
Para visualizar outras métricas de réplicas regionais e entre regiões, além de réplicas de servidores externos, crie um painel personalizado e adicione as métricas que você quer monitorar a ele:
-
No console do Google Cloud, acesse a página Monitoring.
- Selecione a guia Painéis.
- Clique em Criar painel.
- Dê um nome ao painel e clique em OK.
- Clique em Adicionar gráfico.
- Para Tipo de recurso, selecione Cloud SQL Database.
- Execute um dos seguintes procedimentos:
- Para monitorar a métrica do estado de replicação: no campo Selecione
uma métrica, digite
Replication state
. Em seguida, adicione um filtro parastate = "Running"
. O gráfico mostrará 1 se a replicação estiver em execução e 0 se não estiver. - Para monitorar o atraso da replicação, em bytes, de uma réplica de leitura: no
campo Selecione uma métrica, digite
Lag Bytes
. Em seguida, adicione um filtro emreplica_lag_type = "replay_location"
. O gráfico mostra o número de bytes associados a transações relacionadas à primária, mas que ainda não foram repetidas na réplica. - Para monitorar o atraso da replicação, em bytes, de uma réplica de uma
instância primária externa: no campo Selecione uma métrica, digite
Max Lag Bytes
. O gráfico mostra o número de bytes associados a transações relacionadas à primária, mas que ainda não foram confirmados pela réplica.
gcloud
Na instância da réplica, verifique o status da replicação com:
gcloud sql instances describe REPLICA_NAME
Na saída, procure as propriedades databaseReplicationEnabled
e masterInstanceName
.
Para uma instância principal, verifique se há réplicas com:
gcloud sql instances describe PRIMARY_INSTANCE_NAME
Na saída, procure a propriedade replicaNames
.
Cliente psql
Algumas métricas de status de replicação são produzidas pela primária, e outras são produzidas pela réplica. Para as etapas a seguir, conecte-se à réplica ou à instância principal (conforme indicado abaixo) com um cliente PostgreSQL.
Para informações, consulte Opções de conexão para aplicativos externos.
- Para verificar o status da réplica na instância principal:
select * from pg_stat_replication;
Procure as métricas a seguir na saída do comando:client_addr
: o endereço IP da instância da réplica.state
: indica se a linha de execução SQL de eventos no registro de redirecionamento está em execução. O valor éstreaming
quando a replicação é iniciada.replay_lag
: o número de bytes que a linha de execução de réplica SQL tem a menos em comparação com a instância principal. O valor éO
ou um pequeno número de bytes.
- Para verificar o status da réplica na instância da réplica:
select * from pg_stat_wal_receiver;
Procure as seguintes métricas na saída do comando:
sender_host
: o endereço IP da instância principal.status
: indica se a linha de execução SQL de eventos no registro de redirecionamento está em execução. O valor éstreaming
quando a replicação é iniciada.last_msg_send_time
elast_msg_receipt_time
: a diferença entre esses dois carimbos de data/hora é o tempo de atraso
Para verificar se a replicação foi pausada:
select pg_is_wal_replay_paused();
O valor será
t
se a replicação estiver pausada. Caso contrário, o valor seráf
.Para verificar se há transações que foram recebidas da primária, mas ainda não aplicadas:
# for PostgreSQL 9.6 select pg_catalog.pg_last_xlog_receive_location(), pg_catalog.pg_last_xlog_replay_location(); # for PostgreSQL 10 and above select pg_catalog.pg_last_wal_receive_lsn(), pg_catalog.pg_last_wal_replay_lsn();
Se os dois valores forem iguais, significará que a réplica processou todas as transações recebidas da primária.
Resolver problemas
Problema | Solução de problemas |
---|---|
A réplica de leitura não começou a ser replicada na criação. | Provavelmente há um erro mais específico nos arquivos de registro. Inspecione os registros no Cloud Logging para encontrar o erro real. |
Não foi possível criar a réplica de leitura: erro invalidFlagValue. | Uma das sinalizações na solicitação é inválida. Pode ser uma sinalização
fornecida explicitamente ou uma que foi definida como um valor padrão.
Primeiro, verifique se o valor da sinalização Se a sinalização |
Não foi possível criar a réplica de leitura: erro desconhecido. | Provavelmente há um erro mais específico nos arquivos de registro.
Inspecione os registros no
Cloud Logging 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 com upgrade para um tamanho de disco maior. |
O espaço em disco aumenta significativamente. | Um slot que não está sendo usado ativamente para rastrear dados faz com que o PostgreSQL
mantenha os segmentos de WAL indefinidamente, fazendo com que o espaço em disco aumente indefinidamente. Se você usar os recursos de replicação e decodificação lógica no Cloud SQL, os slots de replicação serão criados e descartados automaticamente. Os slots de replicação não utilizados podem ser detectados consultando a visualização do sistema
pg_replication_slots
e filtrando a coluna active . Os slots não utilizados
podem ser descartados para remover segmentos WAL usando o
comando pg_drop_replication_slot .
|
A instância da réplica está usando memória demais. | A réplica usa memória temporária para armazenar em cache as operações
de leitura solicitadas com frequência, o que pode fazer com que ela 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. |
Replicação interrompida. | O limite máximo de armazenamento foi atingido e o aumento
automático de armazenamento não está ativado.
Edite a instância para ativar |
O atraso da replicação é consistentemente alto. | A carga de gravação é alta demais para a réplica processar. O atraso de replicação
ocorre quando a linha de execução SQL em uma réplica não consegue acompanhar a
linha de execução de E/S. Alguns tipos de consultas ou cargas de trabalho podem causar um atraso de replicação
temporário ou permanente para um determinado esquema. Estas são algumas
das causas comuns do atraso de replicação:
Algumas soluções possíveis incluem:
|
Erros ao recriar índices no PostgreSQL 9.6. | Você recebe um erro do PostgreSQL informando que é necessário recriar um
índice específico. Isso só pode ser feito na instância principal. Se você
criar uma nova instância de réplica, em breve receberá o mesmo erro novamente.
Os índices de hash
não são propagados para réplicas nas versões do PostgreSQL abaixo de 10.
Se você precisar usar índices de hash, faça upgrade para o PostgreSQL 10+. Caso contrário, se você 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. | Após a criação de uma réplica, a consulta SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' deve ser executada continuamente em sua instância principal.
|
A criação da réplica falha com o tempo limite. | Transações não confirmadas de longa duração na instância primária podem causar
falha na criação da réplica de leitura.
Recrie a réplica depois de interromper todas as consultas em execução. |
Se a instância principal e a réplica tiverem tamanhos de vCPU diferentes, poderá haver problemas de desempenho de consultas porque o otimizador de consultas considera os tamanhos de vCPU. |
Para resolver esse problema, siga estas etapas:
Se for uma consulta específica, modifique a consulta. Por exemplo, é possível mudar a ordem das mesclagens para ver se o desempenho melhora. |
A seguir
- Saiba como criar uma réplica de leitura.
- Saiba mais sobre os requisitos e as práticas recomendadas de replicação.