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.

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 menu more actions ao lado da listagem.
  3. Selecione Criar réplica de leitura.

    Se você não vir essa opção, a instância é uma réplica. Não é possível criar uma réplica de uma réplica.

  4. Caso a instância tenha backups e geração de registros binários ativados, vá para a próxima etapa. 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 seção Personalizar a instância da página, atualize as configurações da réplica. Comece clicando em Mostrar opções de configuração para exibir os grupos de configurações. Em seguida, expanda os grupos cujas configurações você quer revisar e personalizar. Um resumo de todas as opções selecionadas aparece à direita. A personalização dessas configurações é opcional. Os padrões são atribuídos em todos os casos em que nenhuma personalização é feita.

    Para mais detalhes sobre cada configuração, consulte a página de configurações da instância.

    Por exemplo, para permitir que outros serviços do Google Cloud, como o BigQuery, acessem dados no Cloud SQL e façam consultas nesses dados por meio de uma conexão particular, expanda o grupo Conexões e desmarque a caixa de seleção IP público.

  6. Clique em Criar réplica.

    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
          

    Caso a propriedade databaseReplicationEnabled seja true, a instância será uma réplica. Não é possível criar uma réplica de uma réplica.

  2. Caso a propriedade enabled em backupConfiguration seja false, ative os backups para a instância primária
    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 na instância principal:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --enable-bin-log
    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. Se você estiver criando uma réplica de uma instância principal para o MySQL 8.4 e versões mais recentes e a edição do Cloud SQL para a instância for Enterprise ou Enterprise Plus, não será necessário especificar um valor para esse parâmetro. A réplica herda o tipo de máquina da instância principal.

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

    É possível adicionar mais parâmetros para outras configurações da instância: Para saber mais, consulte gcloud sql instances create.

    Se a instância primária tiver apenas um endereço IP interno e você quiser permitir que outros serviços do Google Cloud, como o BigQuery, acessem dados no Cloud SQL e façam consultas nesses dados por meio de uma conexão interna, adicione o parâmetro --enable-google-private-path ao comando.

    É necessário criar a réplica na mesma rede VPC da instância principal. Também é possível especificar um allocated-ip-range-name nessa rede VPC. Se nenhum intervalo for especificado, a réplica será criada em um intervalo aleatório.

  • A geração de registros binários é compatível com instâncias de réplica de leitura (somente MySQL 5.7 e versões mais recentes). Não compatível com réplicas de failover de HA legadas. Ative a geração de registros binários em uma réplica com o mesmo comando gcloud CLI, usando o nome da instância da réplica em vez do nome da instância principal.
    gcloud sql instances patch REPLICA_INSTANCE_NAME \
    --enable-bin-log
        

    A durabilidade da geração de registros binários na réplica (mas não na instância principal) pode ser definida com a sinalização sync_binlog, que controla com que frequência o servidor MySQL sincroniza o registro binário para o disco.

    Os backups não podem ser ativados em instâncias de réplica, mas a geração de registros binários pode ser ativada em uma réplica mesmo quando os backups estão desativados, ao contrário da principal.

    O período de retenção do binlog em instâncias de réplica é definido automaticamente para um dia, ao contrário de sete dias em instâncias primárias.

Terraform

Para criar uma réplica de leitura, use o recurso Terraform.

resource "google_sql_database_instance" "read_replica" {
  name                 = "mysql-replica-instance-name"
  master_instance_name = google_sql_database_instance.primary.name
  region               = "europe-west4"
  database_version     = "MYSQL_8_0"

  replica_configuration {
    failover_target = false
  }

  settings {
    tier              = "db-n1-standard-2"
    availability_type = "ZONAL"
    disk_size         = "100"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Aplique as alterações

Para aplicar a configuração do Terraform em um projeto do Google Cloud, conclua as etapas nas seções a seguir.

Preparar o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o projeto padrão do Google Cloud em que você quer aplicar as configurações do Terraform.

    Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.

Preparar o diretório

Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.

  1. No Cloud Shell, crie um diretório e um novo arquivo dentro dele. O nome do arquivo precisa ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o arquivo é chamado de main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.

    Copie o exemplo de código no main.tf recém-criado.

    Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.

  3. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
  4. Salve as alterações.
  5. Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
    terraform init

    Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção -upgrade:

    terraform init -upgrade

Aplique as alterações

  1. Revise a configuração e verifique se os recursos que o Terraform vai criar ou atualizar correspondem às suas expectativas:
    terraform plan

    Faça as correções necessárias na configuração.

  2. Para aplicar a configuração do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply

    Aguarde até que o Terraform exiba a mensagem "Apply complete!".

  3. Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.

Excluir as alterações

Para excluir as mudanças, faça o seguinte:

  1. Para desativar a proteção contra exclusão, no arquivo de configuração do Terraform, defina o argumento deletion_protection como false.
    deletion_protection =  "false"
  2. Para aplicar a configuração atualizada do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply
  1. Remova os recursos aplicados anteriormente com a configuração do Terraform executando o seguinte comando e inserindo yes no prompt:

    terraform destroy

REST v1

  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://sqladmin.googleapis.com/v1/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 pointInTimeEnabled forem false, use o método patch do recurso de instâncias para ativar os dois. Na solicitação, especifique quaisquer 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 pointInTimeEnabled como true.

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

    • PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância
    • INSTANCE_NAME: o nome da instância primária ou de réplica de leitura que você está configurando para alta disponibilidade
    • START_TIME: a hora (em horas e minutos)

    Método HTTP e URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    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 leitura. A propriedade databaseVersion precisa ser igual à principal. Se a instância primária usar um endereço IP interno, especifique uma allocatedIpRange da mesma maneira quando cria uma instância principal. Se nenhum intervalo for especificado, a réplica será criada em um intervalo aleatório. 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
    • database-version: string de versão de enum (por exemplo, MYSQL_8_0)
    • 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"
    • private-network: a rede autorizada que você está adicionando ou selecionando para criar uma conexão particular.

    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,
        "ipConfiguration": {
        object (IpConfiguration)
      },
      {
      "ipv4Enabled": false,
      "privateNetwork": private-network,
      "requireSsl": boolean,
      "authorizedNetworks": [
        {
          object (AclEntry)
        }
      ],
      "allocatedIpRange": string
        }
      }
    }
    

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

    Você receberá uma resposta JSON semelhante a esta:

REST v1beta4

  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 mestre.

    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://sqladmin.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 na instância principal, use o método patch do recurso de instâncias para ativar ambos. 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 na instância principal.

    A geração de registros binários é compatível com instâncias de réplica de leitura (somente MySQL 5.7 e versões mais recentes). Ative a geração de registros binários em uma réplica com a mesma API, usando o ID de instância da réplica em vez do ID da instância principal.

    A durabilidade da geração de registros binários na réplica (mas não na instância principal) pode ser definida com a sinalização sync_binlog, que controla com que frequência o servidor MySQL sincroniza o registro binário para o disco.

    Os backups não podem ser ativados em instâncias de réplica, mas a geração de registros binários pode ser ativada em uma réplica mesmo quando os backups estão desativados, ao contrário da principal.

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

    • PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância
    • INSTANCE_NAME: o nome da instância primária ou de réplica de leitura que você está configurando para alta disponibilidade
    • START_TIME: a hora (em horas e minutos)

    Método HTTP e URL:

    PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

    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 leitura. A propriedade databaseVersion precisa ser igual à principal. Se a instância primária usar um endereço IP interno, especifique uma allocatedIpRange da mesma maneira quando cria uma instância 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
    • database-version: string de versão de enum (por exemplo, MYSQL_8_0)
    • 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"
    • private-network: a rede autorizada que você está adicionando ou selecionando para criar uma conexão particular.

    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,
        
        "ipConfiguration": {
        object (IpConfiguration)
      },
      {
      "ipv4Enabled": false,
      "privateNetwork": private-network,
      "requireSsl": boolean,
      "authorizedNetworks": [
        {
          object (AclEntry)
        }
      ],
      "allocatedIpRange": string
        }
        
      }
    }
    

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

    Você receberá uma resposta JSON semelhante a esta:

Criar uma réplica de leitura de uma instância com o Private Service Connect ativado

Para criar uma réplica de instância com Private Service Connect habilitado, use gcloud CLI ou a API. É possível criar essa réplica na mesma região ou em uma região diferente da instância principal (réplica de leitura entre regiões).

A réplica de leitura não pode ser replicada de uma instância com um tipo de conectividade diferente. Por exemplo, uma instância com o Private Service Connect ativado só pode ser replicada de outra instância do Private Service Connect. Ele também não pode ser replicada de uma instância compatível com conexões de IP externas ou de uma instância configurada com acesso a serviços particulares.

gcloud

Para criar uma réplica de leitura de uma instância, use o comando gcloud sql instances create:

gcloud sql instances create REPLICA_INSTANCE_NAME \
--master-instance-name=PRIMARY_INSTANCE_NAME \
--project=PROJECT_ID \
--region=REGION_NAME \
--enable-private-service-connect \
--allowed-psc-projects=ALLOWED_PROJECTS \
--availability-type=AVAILABILITY_TYPE \
--no-assign-ip

Faça as seguintes substituições:

  • REPLICA_INSTANCE_NAME: o nome da instância da réplica.
  • PRIMARY_INSTANCE_NAME: o nome da instância principal.
  • PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância.
  • REGION_NAME: o nome da região da instância da réplica.
  • ALLOWED_PROJECTS: uma lista de IDs ou números de projetos permitidos, separados por vírgulas. Se um projeto não estiver na lista, não será possível usá-lo para criar uma instância e ativar o Private Service Connect para ele.

    O Cloud SQL não copia os projetos permitidos da instância principal para a réplica. Para cada réplica, é preciso criar um endpoint do Private Service Connect. Se você estiver usando o proxy de autenticação do Cloud SQL ou os conectores de linguagem do Cloud SQL, será necessário criar uma zona de DNS e um registro DNS para as réplicas.

  • AVAILABILITY_TYPE: ativar a alta disponibilidade para a promovida. Para esse parâmetro, especifique um dos seguintes valores:
    • REGIONAL: ativa a alta disponibilidade e é recomendado para instâncias de produção. A instância faz o failover para outra zona na sua região selecionada.
    • ZONAL: não fornece capacidade de failover. Esse é o valor padrão.

    Para mais informações sobre como configurar e remover a alta disponibilidade de instâncias, consulte Configurar uma instância existente para alta disponibilidade e Desativar a alta disponibilidade de uma instância.

REST v1

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

  • PRIMARY_INSTANCE_NAME: o nome da instância principal.
  • PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância.
  • REPLICA_INSTANCE_NAME: o nome da instância da réplica.
  • REGION_NAME: o nome da região da instância da réplica.
  • MACHINE_TYPE: o tipo de máquina da instância.
  • AVAILABILITY_TYPE: ativar a alta disponibilidade para a promovida. Para esse parâmetro, especifique um dos seguintes valores:
    • REGIONAL: ativa a alta disponibilidade e é recomendado para instâncias de produção. A instância faz o failover para outra zona na sua região selecionada.
    • ZONAL: não fornece capacidade de failover. Esse é o valor padrão.

    Para mais informações sobre como configurar e remover a alta disponibilidade de instâncias, consulte Configurar uma instância para alta disponibilidade e Desativar a alta disponibilidade de uma instância.

  • ALLOWED_PROJECTS: uma lista de IDs ou números de projetos permitidos, separados por vírgulas. Se um projeto não estiver na lista, não será possível usá-lo para criar uma instância e ativar o Private Service Connect para ele.

    O Cloud SQL não copia os projetos permitidos da instância principal para a réplica. Para cada réplica, é preciso criar um endpoint do Private Service Connect. Se você estiver usando o proxy do Cloud SQL Auth ou os conectores de linguagem do Cloud SQL, será necessário criar uma zona de DNS e um registro DNS para as réplicas.

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": "MYSQL_8_0",
  "name": "REPLICA_INSTANCE_NAME",
  "region": "REGION_NAME",
  "kind": "sql#instance",
  "settings":
  {
    "tier": "MACHINE_TYPE",
    "availabilityType": "AVAILABILITY_TYPE",
    "settingsVersion": 0,
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [ALLOWED_PROJECTS],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "ASYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

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

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/REPLICA_INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "CREATE_REPLICA",
  "name": "OPERATION_ID",
  "targetId": "REPLICA_INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

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

  • PRIMARY_INSTANCE_NAME: o nome da instância principal.
  • PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância.
  • REPLICA_INSTANCE_NAME: o nome da instância da réplica.
  • REGION_NAME: o nome da região da instância da réplica.
  • MACHINE_TYPE: o tipo de máquina da instância.
  • AVAILABILITY_TYPE: ativar a alta disponibilidade para a promovida. Para esse parâmetro, especifique um dos seguintes valores:
    • REGIONAL: ativa a alta disponibilidade e é recomendado para instâncias de produção. A instância faz o failover para outra zona na sua região selecionada.
    • ZONAL: não fornece capacidade de failover. Esse é o valor padrão.

    Para mais informações sobre como configurar e remover a alta disponibilidade de instâncias, consulte Configurar uma instância para alta disponibilidade e Desativar a alta disponibilidade de uma instância.

  • ALLOWED_PROJECTS: uma lista de IDs ou números de projetos permitidos, separados por vírgulas. Se um projeto não estiver na lista, não será possível usá-lo para criar uma instância e ativar o Private Service Connect para ele.

    O Cloud SQL não copia os projetos permitidos da instância principal para a réplica. Para cada réplica, é preciso criar um endpoint do Private Service Connect. Se você estiver usando o proxy do Cloud SQL Auth ou os conectores de linguagem do Cloud SQL, será necessário criar uma zona de DNS e um registro DNS para as réplicas.

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances

Corpo JSON da solicitação:

{
  "masterInstanceName": "PRIMARY_INSTANCE_NAME",
  "project": "PROJECT_ID",
  "databaseVersion": "MYSQL_8_0",
  "name": "REPLICA_INSTANCE_NAME",
  "region": "REGION_NAME",
  "kind": "sql#instance",
  "settings":
  {
    "tier": "MACHINE_TYPE",
    "availabilityType": "AVAILABILITY_TYPE",
    "settingsVersion": 0,
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [ALLOWED_PROJECTS],  
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "ASYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

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

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "CREATE_REPLICA",
  "name": "OPERATION_ID",
  "targetId": "REPLICA_INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

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. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  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 Salvar.

Criar réplicas em cascata

Nesta seção, descrevemos como criar e gerenciar réplicas em cascata.

Para saber mais sobre como as réplicas em cascata funcionam, consulte Réplicas em cascata.

Etapas para criar uma réplica em cascata

Console

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

    Acesse "Instâncias do Cloud SQL"

  2. No MySQL 5.7 ou posterior, ative a replicação.
  3. Clique na guia Réplicas da réplica que atuará como mãe da réplica que você quer criar.
  4. Clique em Criar réplica.
  5. Na página Criar réplica de leitura, atualize o ID da instância e todas as outras opções de configuração, incluindo nome, região e zona.
  6. Clique em Criar.

    O Cloud SQL cria uma réplica. Você retorna à página da instância da réplica mãe.

  7. Siga as etapas de 4 a 6 para cada nova réplica em cascata que você queira criar.

gcloud

  1. Se você estiver usando o MySQL versão 5.7 ou mais recente, ative os binlogs para a principal da nova réplica:
    gcloud sql instances patch --enable-bin-log PARENT_REPLICA_NAME
    Substitua PARENT_REPLICA_NAME pelo nome da réplica mãe.
  2. Crie a nova réplica especificando sua réplica principal como a instância principal usando a sinalização --master-instance-name:
  3. gcloud sql instances create REPLICA_NAME \
          --master-instance-name=PARENT_REPLICA_NAME \
    Substitua:
    • REPLICA_NAME: o ID exclusivo da réplica que você está criando
    • PARENT_REPLICA_NAME: o nome da réplica mãe
  4. Depois de criar a réplica em cascata, é possível ver que as mudanças feitas na instância principal são replicadas em todas as réplicas na cadeia de réplicas em cascata.

curl

  1. Se você estiver usando o MySQL versão 5.7 ou mais recente, ative a geração de registros binários:

    Para ativar a geração de registros binários, salve o JSON a seguir em um arquivo chamado request.JSON e depois invoque o comando curl para ativar a geração de registros binários.
    {
      "settings":
      {
        "backupConfiguration":
        {
          "enabled": false,
          "binaryLogEnabled": true
        }
      }
    }
  2. Para criar uma réplica sob a réplica mãe, edite o exemplo de código JSON a seguir e salve-o em um arquivo chamado request.json:
    {
      "masterInstanceName": "PARENT_REPLICA_NAME",
      "project": "PROJECT_ID",
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
        }
    }
  3. Execute este comando:
    curl -X POST
    -H "Authorization: Bearer "$(gcloud auth print-access-token)
    -H "Content-Type: application/json; charset=utf-8"
    -d @request.json
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"

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

De repente, o atraso de replicação aumenta. Isso é causado por transações de longa duração. Quando uma transação (instrução única ou várias instruções) é confirmada na instância de origem, o horário de início da transação é gravado no registro binário. Quando a réplica recebe esse evento do binlog, ela compara esse carimbo de data/hora com aquele atual para calcular o atraso da replicação. Dessa forma, uma transação de longa duração na origem resultaria em um grande atraso de replicação imediato na réplica. Se a quantidade de mudanças de linhas na transação for grande, a réplica também levará muito tempo para executá-la. Durante esse período, o atraso da replicação está aumentando. Quando a réplica termina essa transação, o período de recuperação depende da carga de trabalho de gravação na origem e da velocidade de processamento da réplica.

Para evitar uma transação longa, veja algumas soluções possíveis:

  • Dividir a transação em várias transações pequenas
  • Divida uma única consulta de gravação grande em lotes menores
  • Tente separar consultas de SELECT longas de uma transação combinada com DMLs.
Alterar sinalizações paralelas de replicação resulta em um erro. Um valor incorreto é definido para uma ou mais dessas sinalizações.

Na instância principal exibindo a mensagem de erro, defina as sinalizações de replicação paralela:

  1. Modifique as sinalizações binlog_transaction_dependency_tracking e transaction_write_set_extraction:
    • binlog_transaction_dependency_tracking=COMMIT_ORDER
    • transaction_write_set_extraction=OFF
  2. Adicione a sinalização slave_pending_jobs_size_max:

    slave_pending_jobs_size_max=33554432

  3. Modifique a sinalização transaction_write_set_extraction:

    transaction_write_set_extraction=XXHASH64

  4. Modifique a sinalização binlog_transaction_dependency_tracking:

    binlog_transaction_dependency_tracking=WRITESET

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