Criar réplicas de leitura

Esta página descreve como criar uma réplica de leitura para uma instância do Cloud SQL.

Uma réplica de leitura é uma cópia da instância principal que reflete as alterações nela quase em tempo real. É possível usar uma réplica de leitura para:

  • transferir solicitações de leitura ou tráfego de análise do principal;
  • realizar uma migração regional ou fazer o failover para outra região para fins de recuperação de desastres (se a réplica for uma réplica entre regiões, ou seja, uma réplica criada em uma região diferente dessa do primário).

Para mais informações sobre como funciona a replicação, consulte Replicação no Cloud SQL.

Antes de começar

Se você estiver criando a primeira réplica para essa instância, verifique se ela atende aos requisitos das instâncias principais. Saiba mais

Como criar uma réplica de leitura

As etapas para criar uma réplica de leitura estão abaixo.

Console

  1. Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.

    Acesse a página "Instâncias" do Cloud SQL

  2. Encontre a instância em que uma réplica será criada e abra o respectivo menu de mais ações mais à direita da listagem.

    Imagem do menu de três pontos

  3. Selecione Criar réplica de leitura.

    Caso não veja essa opção, a instância é uma réplica. Não é possível criar uma réplica de outra.

  4. Clique em Criar.

    Você retorna à página da instância mestre.

gcloud

Crie a réplica:

gcloud sql instances create [REPLICA_NAME] --master-instance-name=[MASTER_INSTANCE_NAME]

REST v1beta4

Use o método insert do recurso de instâncias para criar a réplica de failover. As propriedades "região" e "databaseVersion" precisam ser iguais às da mestre.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • database-version: string de versão de enumeração (por exemplo, POSTGRES_12)
  • primary-instance-name: o nome da instância principal.
  • primary-instance-region: a região da instância principal
  • replica-region: a região da instância da réplica
  • replica-name: o nome da instância da réplica
  • machine-type: string de enumeração do tipo de máquina (camada). Por exemplo: "db-n1-standard-4"

Método HTTP e URL:

POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances

Corpo JSON da solicitação:

{
  "masterInstanceName": "primary-instance-name",
  "project": "project-id",
  "databaseVersion": "database-version",
  "name": "replica-name",
  "region": "replica-region",
  "settings":
  {
    "tier": "machine-type",
    "settingsVersion": 0,
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

Solução de problemas

Clique nos links da tabela para ver detalhes:

Para este problema... O problema pode ser... Tente o seguinte...
A réplica de leitura não começou a ser replicada na criação. Há muitas causas possíveis. Verifique os registros para encontrar mais informações.
Não foi possível criar a réplica de leitura: erro invalidFlagValue. Uma das sinalizações fornecidas explicitamente ou por padrão é inválida. Verifique os valores e registros da sinalização para encontrar mais informações.
Não foi possível criar a réplica de leitura: erro desconhecido. Há muitas causas possíveis. Verifique os registros para encontrar mais informações.
O disco está cheio. O tamanho do disco da instância principal pode ficar cheio durante a criação da réplica. Faça upgrade da instância principal para um tamanho de disco maior.
A instância da réplica está usando memória demais. As réplicas podem armazenar em cache as operações de leitura solicitadas com frequência. Reinicie a instância da réplica para recuperar o espaço de memória temporário.
Replicação interrompida. O espaço de armazenamento máximo foi atingido e o aumento automático de armazenamento não está ativado. Ative o aumento automático de armazenamento.
O atraso da replicação é consistentemente alto. muitas causas diferentes possíveis. Veja algumas dicas neste link.

A réplica de leitura não começou a ser replicada na criação

A réplica de leitura não começou a ser replicada na criação.

Possível problema

Provavelmente há um erro mais específico nos arquivos de registro.

O que você pode tentar

Inspecione os registros no Cloud Logging para encontrar o erro real.


Não foi possível criar a réplica de leitura: erro invalidFlagValue.

Não foi possível criar a réplica de leitura: invalidFlagValue.

Possível problema

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.

O que você pode tentar

Primeiro, verifique se o valor da sinalização max_connections é maior ou igual ao valor na instância principal.

Se a sinalização max_connections estiver definida corretamente, inspecione os registros no Cloud Logging para encontrar o erro real.


Não foi possível criar a réplica de leitura: erro desconhecido

Não foi possível criar a réplica de leitura: unknown error.

O problema pode ser

Provavelmente há um erro mais específico nos arquivos de registro.

O que você pode tentar

Inspecione os registros no Cloud Logging para encontrar o erro real.

Se o erro for set Service Networking service account as servicenetworking.serviceAgent role on consumer project, desative e reative o Service Networking API. Essa ação cria a conta de serviço necessária para continuar com o processo.


Disco cheio

error: disk is full

O problema pode ser

O tamanho do disco da instância principal pode ficar cheio durante a criação da réplica.

O que você pode tentar

Edite a instância principal com upgrade para um tamanho de disco maior.


A instância da réplica está usando memória demais

A instância da réplica está usando memória demais.

O problema pode ser

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.

O que você deve tentar

Reinicie a instância da réplica para recuperar o espaço de memória temporário.


Replicação interrompida

Replicação interrompida.

O problema pode ser

O limite máximo de armazenamento foi atingido e >automatic storage increase is disabled.

O que você pode tentar

Edite a instância para ativar automatic storage increase.


O atraso da replicação é consistentemente alto

O atraso da replicação é consistentemente alto.

O problema pode ser

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 longo ou temporário para um determinado esquema. Estas são algumas das causas comuns do atraso de replicação:

  • Consultas lentas na réplica. Encontre e corrija esses problemas.
  • Todas as tabelas precisam ter uma chave primária/exclusiva. Cada atualização em uma tabela sem uma chave exclusiva/principal resulta em varreduras completas na tabela da réplica.
  • Consultas como DELETE ... WHERE field < 50000000 causam atraso de replicação com base em linha, já que um grande número de atualizações é acumulado na réplica.

O que você deve tentar

Algumas soluções possíveis:

  • Edite a instância para aumentar o tamanho da réplica.
  • Reduza a carga no banco de dados.
  • Inclua as tabelas em um índice.
  • Identifique e corrija consultas lentas.
  • Recrie a réplica.

A seguir