Como 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. Você cria uma réplica para descarregar solicitações de leitura ou tráfego de análise da principal.

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 para que você quer criar uma réplica e abra o respectivo menu more actions mais à direita da listagem.
  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. Caso a instância tenha backups e geração de registros binárias ativados, vá para a Etapa 6. Caso contrário, selecione Automatizar backups e Ativar geração de registros binários, clique em Continuar e em Salvar e reiniciar para reiniciar a instância.

    A ativação da geração de registros binários causa a reinicialização da instância.

  5. Na página Criar réplica de leitura, atualize o ID da instância, se necessário, e quaisquer outras opções de configuração necessárias, incluindo nome, região e zona.
  6. Clique em Criar

    O Cloud SQL cria um backup, se necessário, e cria a réplica. Você retorna à página da instância principal.

gcloud

  1. Verifique o status da instância principal:
    gcloud sql instances describe [PRIMARY_INSTANCE_NAME]

    Se a propriedade databaseReplicationEnabled for true, a instância é uma réplica. não é possível criar uma réplica de uma réplica.

  2. Se a propriedade enabled em backupConfiguration for false, ative os backups para a instância principal:
    gcloud sql instances patch [PRIMARY_INSTANCE_NAME] --backup-start-time [HH:MM]
    O parâmetro backup-start-time é especificado em 24 horas, no fuso horário UTC±00, e especifica o início de uma janela de backup de quatro horas. Os backups podem começar a qualquer momento durante a janela de backup.
  3. Se a propriedade binaryLogEnabled for false, ative os registros binários:
    gcloud sql instances patch --enable-bin-log [PRIMARY_INSTANCE_NAME]
    A ativação de logs binários causa a reinicialização da instância.
  4. Crie a réplica:
    gcloud sql instances create [REPLICA_NAME] --master-instance-name=[PRIMARY_INSTANCE_NAME]
    

    Você pode especificar um tamanho de nível diferente usando o parâmetro --tier, se necessário.

    Você pode especificar uma região diferente usando o parâmetro --region.

    Se a instância primária tiver apenas um endereço IP particular, adicione o parâmetro --no-assign-ip ao comando.

REST

  1. Veja a configuração de backup atual

    Use o método get do recurso de instâncias para retornar a versão do banco de dados e a configuração de backup atual para a instância principal.

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

    • project-id: o ID do projeto
    • primary-instance-name: o nome da instância principal.

    Método HTTP e URL:

    GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/primary-instance-name

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

    Você receberá uma resposta JSON semelhante a esta:

  2. Verifique se os campos de replicação estão definidos

    Se enabled ou binaryLogEnabled forem false, use o método patch do recurso de instâncias para ativar os dois. Na solicitação, especifique as propriedades da configuração de backup que você quer alterar.

    Para ativar backups, defina enabled como true e startTime como um horário do dia no formato HH:MM. O parâmetro startTime é especificado em 24 horas, no fuso horário UTC±00, e especifica o início de uma janela de backup de quatro horas. Os backups podem começar a qualquer momento durante a janela de backup.

    Para ativar a recuperação pontual, defina binaryLogEnabled como true.

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

    • project-id: o ID do projeto
    • instance-id: o ID da instância
    • start-time: o horário no formato "HH:MM"

    Método HTTP e URL:

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

    Corpo JSON da solicitação:

    {
      "settings":
      {
        "backupConfiguration":
        {
          "startTime": "start-time",
          "enabled": true,
          "binaryLogEnabled": true
        }
      }
    }
    

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

    Você receberá uma resposta JSON semelhante a esta:

  3. Crie a réplica de leitura

    Use o método insert do recurso de instâncias para criar a réplica de failover. A propriedade databaseVersion precisa ser igual à principal. Para uma réplica de leitura entre regiões, especifique uma região diferente da região da instância principal.

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

    • project-id: o ID do projeto
    • 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",
      "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. Pelo menos um backup precisa ser criado após a ativação da geração de registros binários. Aguarde até que pelo menos um backup seja criado depois de ativar os registros binários.
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.

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.

O problema pode ser

A instância principal precisa ter pelo menos uma semana de binlogs. Caso contrário, as réplicas não poderão ser replicadas.

O que você deve tentar

Aguarde até que haja binlogs suficientes.


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ê deve 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

Erro UPDATE_DISK_SIZE ou mysqld: 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ê deve 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ê deve 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. Elas são detectáveis ao ativar log_slow_slave_statements e corrigi-las.
  • 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ê precisa 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