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, em circunstâncias normais. É possível usar uma réplica de leitura para descarregar solicitações de leitura ou tráfego de análise a partir da instância principal.

Além disso, para recuperação de desastres, é possível fazer uma migração regional. Se uma réplica for uma réplica entre regiões, é possível realizar um failover para outra região. Especificamente, você pode promover uma réplica para uma instância autônoma (nesse caso, as réplicas existentes não considerariam essa instância como primária).

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. No Console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "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 v1

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. Por exemplo: "db-custom-1-3840"

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1/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:

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. Por exemplo: "db-custom-1-3840"

Método HTTP e URL:

POST https://sqladmin.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:

Como configurar réplicas de leitura para autenticação do banco de dados do IAM

As réplicas de leitura não têm a sinalização cloudsql.iam_authentication ativada automaticamente quando ela está ativada na instância principal.

Para configurar uma réplica de leitura para autenticação do banco de dados do IAM, siga estas instruções:

  1. No Console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Clique no nome da instância para abrir a página Visão geral correspondente.
  3. No bloco de configuração, procure a sinalização cloudsql.iam_authentication. Se a sinalização não estiver na lista, a ativação da sinalização na réplica de leitura não será necessária. Se a sinalização estiver na lista, você precisará ativá-la na réplica de leitura. Se você precisar ativar a sinalização na réplica de leitura, prossiga para a próxima etapa.
  4. Selecione Réplicas no menu de navegação do SQL.
  5. Clique no nome da réplica que você quer editar.
  6. Clique em Editar.
  7. Na seção Opções de configuração, expanda Sinalizações.
  8. Selecione + Adicionar item.
  9. Insira cloudsql.iam_authentication como o nome da sinalização. Verifique se Ativado está selecionado para essa sinalização.
  10. Clique em Save.

Solução de 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 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. 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: 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.

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.
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 automatic storage increase.

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:
  • 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.

Algumas soluções possíveis incluem:

  • Editar 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.
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 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.

A seguir