Crie 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 à instância principal quase em tempo real, em circunstâncias normais. Pode usar uma réplica de leitura para descarregar pedidos de leitura ou tráfego de estatísticas da instância principal.

Além disso, para recuperação de desastres, pode fazer uma migração regional. Se uma réplica for uma réplica entre regiões, pode fazer uma comutação por falha para outra região; especificamente, pode promover uma réplica para uma instância autónoma (neste caso, as réplicas existentes não considerariam essa instância como principal).

Para mais informações sobre o funcionamento da replicação, consulte o artigo Replicação no Cloud SQL.

Antes de começar

Se estiver a criar a primeira réplica para esta instância, certifique-se de que a instância cumpre os requisitos das instâncias principais. Saiba mais.

Crie uma réplica de leitura

Seguem-se os passos para criar uma réplica de leitura.

Consola

  1. Na Trusted Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Encontre a instância para a qual quer criar uma réplica e, de seguida, abra o menu more actions junto à ficha.
  3. Selecione Criar réplica de leitura.

    Se não vir essa escolha, significa que a instância é uma réplica. Não pode criar uma réplica de uma réplica.

  4. Se a instância tiver cópias de segurança e registo binário ativados, continue com o passo seguinte. Caso contrário, selecione Automatizar cópias de segurança e Ativar registo binário, clique em Continuar e, de seguida, clique em Guardar e reiniciar para reiniciar a instância.

    A ativação do registo binário faz com que a instância seja reiniciada.

  5. Na secção Personalize a sua instância da página, atualize as definições da sua réplica. Comece por clicar em Mostrar opções de configuração para apresentar os grupos de definições. Em seguida, expanda os grupos pretendidos para rever e personalizar as definições. Um Resumo de todas as opções que selecionar é apresentado à direita. A personalização destas definições é opcional. As predefinições são atribuídas em todos os casos em que não são feitas personalizações.

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

    Por exemplo, para permitir que outros serviços Trusted Cloud by S3NS , como o BigQuery, acedam a dados no Cloud SQL e façam consultas a estes dados através de uma associação interna, expanda o grupo Associações e, de seguida, desmarque a caixa de verificação IP público.

  6. Clique em Criar réplica.

    O Cloud SQL cria uma cópia de segurança, se necessário, e cria a réplica. Regressa à página da instância para o servidor principal.

gcloud

  1. Verifique o estado 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 pode criar uma réplica de uma réplica.

  2. Se a propriedade enabled em backupConfiguration estiver false, ative já as cópias de segurança para a instância principal:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --backup-start-time=>HH:MM
          
    O parâmetro backup-start-time é especificado na hora de 24 horas, no fuso horário UTC±00, e especifica o início de uma janela de cópia de segurança de 4 horas. As cópias de segurança podem começar em qualquer altura durante o período de cópia de segurança.
  3. Se a propriedade binaryLogEnabled for false, ative os registos binários na instância principal:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --enable-bin-log
    A ativação dos registos binários faz com que a instância seja reiniciada.
  4. Crie a réplica:
    gcloud sql instances create REPLICA_NAME \
    --master-instance-name=PRIMARY_INSTANCE_NAME

    Se necessário, pode especificar um tamanho de nível diferente através do parâmetro --tier. Se estiver a criar uma réplica a partir de uma instância principal para o MySQL 8.4 e posterior, e a edição do Cloud SQL para a instância for Enterprise ou Enterprise Plus, não tem de especificar um valor para este parâmetro. A réplica herda o tipo de máquina da instância principal.

    Pode especificar uma região diferente através do parâmetro --region.

    Pode adicionar mais parâmetros para outras definições da instância. Para saber mais, consulte o artigo gcloud sql instances create.

    Se a instância principal tiver apenas um endereço IP interno e quiser permitir que outros Trusted Cloud by S3NS serviços, como o BigQuery, acedam aos dados no Cloud SQL e façam consultas a estes dados através de uma ligação interna, adicione o parâmetro --enable-google-private-path ao comando.

    Tem de criar a réplica na mesma rede VPC que a instância principal. Também pode especificar um allocated-ip-range-name nessa rede de VPC. Se não for especificado nenhum intervalo, a réplica é criada num intervalo aleatório.

  • O registo binário é suportado em instâncias de réplicas de leitura (apenas MySQL 5.7 e posteriores). Não suportado em réplicas de comutação em caso de falha de HA antigas). Ative o registo binário numa 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 \
    --enforce-new-network-architecture
        

    A durabilidade do registo binário na instância da réplica (mas não na instância principal) pode ser definida com a flag sync_binlog, que controla a frequência com que o servidor MySQL sincroniza o registo binário com o disco.

    Não é possível ativar as cópias de segurança em instâncias de réplica, mas o registo binário pode ser ativado numa réplica, mesmo quando as cópias de segurança estão desativadas, ao contrário da instância principal.

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

  • Use a flag enforce-new-network-architecture para aplicar a utilização da nova arquitetura de rede à instância no momento da criação, mesmo que o projeto não esteja totalmente atualizado. Para ver mais detalhes sobre a nova arquitetura de rede e as respetivas implicações, consulte Atualize uma instância para a nova arquitetura de rede e Atribua um intervalo de endereços IP.

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 num Trusted Cloud projeto, conclua os passos nas secções seguintes.

Prepare o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o Trusted Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.

    Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.

Prepare o diretório

Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).

  1. No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o ficheiro é denominado main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.

    Copie o exemplo de código para o ficheiro main.tf criado recentemente.

    Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.

  3. Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
  4. Guarde as alterações.
  5. Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
    terraform init

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

    terraform init -upgrade

Aplique as alterações

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

    Faça correções à configuração conforme necessário.

  2. Aplique a configuração do Terraform executando o seguinte comando e introduzindo yes no comando:
    terraform apply

    Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).

  3. Abra o seu Trusted Cloud projeto para ver os resultados. Na Trusted Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.

Eliminar as alterações

Para eliminar as alterações, faça o seguinte:

  1. Para desativar a proteção contra eliminação, no ficheiro de configuração do Terraform, defina o argumento deletion_protection como false.
    deletion_protection =  "false"
  2. Aplique a configuração do Terraform atualizada executando o seguinte comando e introduzindo yes no comando:
    terraform apply
  1. Remova os recursos aplicados anteriormente com a sua configuração do Terraform executando o seguinte comando e introduzindo yes no comando:

    terraform destroy

REST v1

  1. Obtenha a configuração atual da cópia de segurança

    Use o método get do recurso instances para devolver a versão da base de dados e a configuração de cópia de segurança atual para o principal.

    Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

    • 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 o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

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

    Se enabled ou pointInTimeEnabled forem false, use o método patch do recurso instances para os ativar ambos. No pedido, especifique as propriedades da configuração da cópia de segurança que quer alterar.

    Para ativar as cópias de segurança, defina enabled como true e startTime para uma hora do dia no formato HH:MM. O parâmetro startTime é especificado na hora de 24 horas, no fuso horário UTC±00, e especifica o início de uma janela de cópia de segurança de 4 horas. As cópias de segurança podem começar em qualquer altura durante o período de cópia de segurança.

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

    Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

    • PROJECT_ID: o ID ou o número do projeto do Trusted Cloud projeto que contém a instância
    • INSTANCE_NAME: o nome da instância principal ou de réplica de leitura que está a configurar 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 do pedido:

    {
      "settings":
      {
        "backupConfiguration":
        {
          "startTime": "START_TIME",
          "enabled": true,
          "binaryLogEnabled": true
        }
      }
    }
    

    Para enviar o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

  3. Crie a réplica de leitura

    Use o método insert do recurso instances para criar a réplica de leitura. A propriedade databaseVersion tem de ser igual à propriedade principal. Se a instância principal usar um endereço IP interno, pode especificar um allocatedIpRange da mesma forma que quando cria uma instância principal. Se não for especificado nenhum intervalo, a réplica é criada num 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 qualquer um dos dados do pedido, faça as seguintes substituições:

    • project-id: o ID do projeto
    • database-version: string da versão de enumeração (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 de réplica
    • replica-name: o nome da instância de réplica
    • machine-type: string enum do tipo de máquina. Por exemplo: "db-custom-1-3840"
    • private-network: A rede autorizada que está a adicionar ou a selecionar para criar uma ligação privada.

    Pode usar o campo sqlNetworkArchitecture para aplicar a utilização da nova arquitetura de rede à instância no momento da criação, mesmo que o projeto não esteja totalmente atualizado. Para mais detalhes sobre a nova arquitetura de rede e as respetivas implicações, consulte os artigos Atualize uma instância para a nova arquitetura de rede e Atribua um intervalo de endereços IP.

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances

    Corpo JSON do pedido:

    {
      "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
        }
      },
      "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
    }
    

    Para enviar o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

REST v1beta4

  1. Obtenha a configuração atual da cópia de segurança

    Use o método get do recurso instances para devolver a versão da base de dados e a configuração de cópia de segurança atual para o mestre.

    Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

    • 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 o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

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

    Se enabled ou binaryLogEnabled estiverem false na instância principal, use o método patch do recurso instances para os ativar ambos. No pedido, especifique as propriedades da configuração da cópia de segurança que quer alterar.

    Para ativar as cópias de segurança, defina enabled como true e startTime para uma hora do dia no formato HH:MM. O parâmetro startTime é especificado na hora de 24 horas, no fuso horário UTC±00, e especifica o início de uma janela de cópia de segurança de 4 horas. As cópias de segurança podem começar em qualquer altura durante o período de cópia de segurança.

    Para ativar a recuperação num ponto específico no tempo, defina binaryLogEnabled como true na instância principal.

    O registo binário é suportado em instâncias de réplica de leitura (apenas MySQL 5.7 e posteriores). Ative o registo binário numa réplica com a mesma API, usando o ID da instância da réplica em vez do ID da instância principal.

    A durabilidade do registo binário na instância da réplica (mas não na instância principal) pode ser definida com a flag sync_binlog, que controla a frequência com que o servidor MySQL sincroniza o registo binário com o disco.

    Não é possível ativar as cópias de segurança em instâncias de réplica, mas o registo binário pode ser ativado numa réplica, mesmo quando as cópias de segurança estão desativadas, ao contrário da instância principal.

    Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

    • PROJECT_ID: o ID ou o número do projeto do Trusted Cloud projeto que contém a instância
    • INSTANCE_NAME: o nome da instância principal ou de réplica de leitura que está a configurar 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 do pedido:

    {
      "settings":
      {
        "backupConfiguration":
        {
          "startTime": "START_TIME",
          "enabled": true,
          "binaryLogEnabled": true
        }
      }
    }
    

    Para enviar o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

  3. Crie a réplica de leitura

    Use o método insert do recurso instances para criar a réplica de leitura. A propriedade databaseVersion tem de ser igual à propriedade principal. Se a instância principal usar um endereço IP interno, pode especificar um allocatedIpRange da mesma forma que 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 qualquer um dos dados do pedido, faça as seguintes substituições:

    • project-id: o ID do projeto
    • database-version: string da versão de enumeração (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 de réplica
    • replica-name: o nome da instância de réplica
    • machine-type: string enum do tipo de máquina. Por exemplo: "db-custom-1-3840"
    • private-network: A rede autorizada que está a adicionar ou a selecionar para criar uma ligação privada.

    Pode usar o campo sqlNetworkArchitecture para aplicar a utilização da nova arquitetura de rede à instância no momento da criação, mesmo que o projeto não esteja totalmente atualizado. Para mais detalhes sobre a nova arquitetura de rede e as respetivas implicações, consulte os artigos Atualize uma instância para a nova arquitetura de rede e Atribua um intervalo de endereços IP.

    Método HTTP e URL:

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

    Corpo JSON do pedido:

    {
      "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
        }
        
      },
      "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
    }
    

    Para enviar o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

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

Para criar uma réplica de leitura de uma instância com o Private Service Connect ativado, use a CLI gcloud ou a API. Pode criar esta réplica na mesma região ou numa região diferente da instância principal (réplica de leitura entre regiões).

A réplica de leitura não pode ser replicada a partir de uma instância com um tipo de conetividade diferente. Por exemplo, uma instância com o Private Service Connect ativado só pode ser replicada a partir de outra instância do Private Service Connect. Também não pode ser replicada a partir de uma instância que suporte ligações IP externas ou de uma instância configurada com acesso a serviços privados.

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 de réplica.
  • PRIMARY_INSTANCE_NAME: o nome da instância principal.
  • PROJECT_ID: o ID ou o número do projeto do Trusted Cloud projeto 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 incluído nesta lista, não pode usá-lo para criar uma instância e ativar o Private Service Connect para o mesmo.

    O Cloud SQL não copia os projetos permitidos para a instância principal para a réplica. Para cada réplica, tem de criar um ponto final do Private Service Connect. Se estiver a usar o proxy Auth do Cloud SQL ou os conetores de linguagem do Cloud SQL, crie uma zona DNS e um registo DNS para as réplicas.

  • AVAILABILITY_TYPE: ative a elevada disponibilidade para a instância. Para este parâmetro, especifique um dos seguintes valores:
    • REGIONAL: ative a alta disponibilidade. Esta opção é recomendada para instâncias de produção. A instância comuta para outra zona na região selecionada.
    • ZONAL: não oferecem capacidade de comutação por falha. Este é o valor predefinido.

    Para mais informações sobre como definir e remover a elevada disponibilidade para instâncias, consulte os artigos Configure uma instância existente para elevada disponibilidade e Desative a elevada disponibilidade para uma instância.

REST v1

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PRIMARY_INSTANCE_NAME: o nome da instância principal.
  • PROJECT_ID: o ID ou o número do projeto do Trusted Cloud projeto que contém a instância.
  • REPLICA_INSTANCE_NAME: o nome da instância de 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: ative a elevada disponibilidade para a instância. Para este parâmetro, especifique um dos seguintes valores:
    • REGIONAL: ative a alta disponibilidade. Esta opção é recomendada para instâncias de produção. A instância comuta para outra zona na região selecionada.
    • ZONAL: não oferecem capacidade de comutação por falha. Este é o valor predefinido.

    Para mais informações sobre como definir e remover a elevada disponibilidade para instâncias, consulte os artigos Configure uma instância existente para elevada disponibilidade e Desative a elevada disponibilidade para 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 incluído nesta lista, não pode usá-lo para criar uma instância e ativar o Private Service Connect para o mesmo.

    O Cloud SQL não copia os projetos permitidos para a instância principal para a réplica. Para cada réplica, tem de criar um ponto final do Private Service Connect. Se estiver a usar o proxy Auth do Cloud SQL ou os conectores de linguagem do Cloud SQL, tem de criar uma zona DNS e um registo DNS para as réplicas.

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

Corpo JSON do pedido:

{
  "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 o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "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 qualquer um dos dados do pedido, faça as seguintes substituições:

  • PRIMARY_INSTANCE_NAME: o nome da instância principal.
  • PROJECT_ID: o ID ou o número do projeto do Trusted Cloud projeto que contém a instância.
  • REPLICA_INSTANCE_NAME: o nome da instância de 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: ative a elevada disponibilidade para a instância. Para este parâmetro, especifique um dos seguintes valores:
    • REGIONAL: ative a alta disponibilidade. Esta opção é recomendada para instâncias de produção. A instância comuta para outra zona na região selecionada.
    • ZONAL: não oferecem capacidade de comutação por falha. Este é o valor predefinido.

    Para mais informações sobre como definir e remover a elevada disponibilidade para instâncias, consulte os artigos Configure uma instância existente para elevada disponibilidade e Desative a elevada disponibilidade para 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 incluído nesta lista, não pode usá-lo para criar uma instância e ativar o Private Service Connect para o mesmo.

    O Cloud SQL não copia os projetos permitidos para a instância principal para a réplica. Para cada réplica, tem de criar um ponto final do Private Service Connect. Se estiver a usar o proxy Auth do Cloud SQL ou os conectores de linguagem do Cloud SQL, tem de criar uma zona DNS e um registo DNS para as réplicas.

Método HTTP e URL:

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

Corpo JSON do pedido:

{
  "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 o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "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"
}

Configure réplicas de leitura para a autenticação de base de dados IAM

As réplicas de leitura não têm a flag cloudsql_iam_authentication ativada automaticamente quando está ativada na instância principal.

Para configurar uma réplica de leitura para a autenticação da base de dados IAM:

  1. Na Trusted Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Para abrir a página Vista geral de uma instância, clique no nome da instância.
  3. No mosaico Configuração, procure a flag cloudsql_iam_authentication. Se a flag não estiver na lista, não é necessário ativá-la na réplica de leitura. Se a flag estiver na lista, tem de a ativar na réplica de leitura. Se precisar de ativar a flag na réplica de leitura, avance para o passo seguinte.
  4. Selecione Réplicas no menu de navegação SQL.
  5. Clique no nome da réplica que quer editar.
  6. Clique em Edit.
  7. Na secção Opções de configuração, expanda Flags.
  8. Selecione + Adicionar item.
  9. Introduza cloudsql_iam_authentication para o nome da flag. Certifique-se de que a opção Ativado está selecionada para esta sinalização.
  10. Clique em Guardar.

Crie réplicas em cascata

Esta secção descreve como criar e gerir réplicas em cascata.

Para informações sobre o funcionamento das réplicas em cascata, consulte o artigo Réplicas em cascata.

Passos para criar uma réplica em cascata

Consola

  1. Na Trusted Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Para o MySQL 5.7 ou posterior, ative a replicação.
  3. Clique no separador Réplicas para a réplica que vai atuar como principal para a réplica que quer criar.
  4. Clique em Criar réplica.
  5. Na página Criar réplica de leitura, atualize o ID da instância e quaisquer outras opções de configuração, incluindo o nome, a região e a zona.
  6. Clique em Criar.

    O Cloud SQL cria uma réplica. Regressa à página da instância da réplica principal.

  7. Siga os passos 4 a 6 para cada nova réplica em cascata que quer criar.

gcloud

  1. Se estiver a usar a versão 5.7 ou posterior do MySQL, ative os registos binários para o principal da nova réplica:
    gcloud sql instances patch --enable-bin-log PARENT_REPLICA_NAME
    Substitua PARENT_REPLICA_NAME pelo nome da réplica principal.
  2. Crie a nova réplica especificando a réplica principal como a instância principal através da flag --master-instance-name:
  3. gcloud sql instances create REPLICA_NAME \
          --master-instance-name=PARENT_REPLICA_NAME \
    Substitua o seguinte:
    • REPLICA_NAME: o ID exclusivo da réplica que está a criar
    • PARENT_REPLICA_NAME: o nome da réplica principal
  4. Depois de criar a réplica em cascata, pode ver que as alterações feitas à instância principal são replicadas em todas as réplicas na cadeia de réplicas em cascata.

curl

  1. Se estiver a usar o MySQL versão 5.7 ou posterior, ative o registo binário:

    Para ativar o registo binário, guarde o seguinte JSON num ficheiro denominado request.JSON e, em seguida, invoque o comando curl para ativar o registo binário.
    {
      "settings":
      {
        "backupConfiguration":
        {
          "enabled": false,
          "binaryLogEnabled": true
        }
      }
    }
  2. Para criar uma réplica na réplica principal, edite o seguinte exemplo de código JSON e guarde-o num ficheiro denominado request.json:
    {
      "masterInstanceName": "PARENT_REPLICA_NAME",
      "project": "PROJECT_ID",
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
        }
    }
  3. Execute o seguinte 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 Resolução de problemas
A réplica de leitura não começou a ser replicada na criação. Provavelmente, existe um erro mais específico nos ficheiros de registo. Inspeccione os registos nos Registos na nuvem para encontrar o erro real.
Não é possível criar uma réplica de leitura: erro invalidFlagValue. Uma das flags no pedido é inválida. Pode ser uma flag que forneceu explicitamente ou uma que foi definida para um valor predefinido.

Primeiro, verifique se o valor da flag max_connections é superior ou igual ao valor no registo principal.

Se a flag max_connections estiver definida corretamente, inspecione os registos no Cloud Logging para encontrar o erro real.

Não é possível criar uma réplica de leitura: erro desconhecido. Provavelmente, existe um erro mais específico nos ficheiros de registo. Inspeccione os registos nos Registos na nuvem 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. Esta 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 para a atualizar para um tamanho de disco maior.
A instância da réplica está a usar demasiada memória. A réplica usa memória temporária para colocar em cache operações de leitura pedidas com frequência, o que pode fazer com que 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.

A replicação foi interrompida. O limite máximo de armazenamento foi atingido e o aumento automático do armazenamento não está ativado.

Edite a instância para ativar a autorização automatic storage increase.

O atraso de replicação é consistentemente elevado. A carga de escrita é demasiado elevada para a réplica processar. O atraso de replicação ocorre quando o segmento SQL numa réplica não consegue acompanhar o segmento de E/S. Alguns tipos de consultas ou cargas de trabalho podem causar um atraso de replicação elevado temporário ou permanente para um determinado esquema. Algumas das causas típicas do atraso na replicação são:
  • Consultas lentas na réplica. Encontre-os e corrija-os.
  • Todas as tabelas têm de ter uma chave exclusiva/principal. Cada atualização numa tabela sem uma chave única/primária provoca análises completas da tabela na réplica.
  • As consultas como DELETE ... WHERE field < 50000000 causam um atraso na replicação com a replicação baseada em linhas, uma vez que um grande número de atualizações é acumulado na réplica.

Algumas soluções possíveis incluem:

O atraso de replicação aumenta subitamente. Isto deve-se a transações de longa duração. Quando uma transação (declaração única ou várias declarações) é confirmada na instância de origem, a hora de início da transação é registada no registo binário. Quando a réplica recebe este evento binlog, compara essa data/hora com a data/hora atual para calcular o atraso da replicação. Assim, uma transação de longa duração na origem resultaria num grande atraso de replicação imediato na réplica. Se a quantidade de alterações de linhas na transação for grande, a réplica também demoraria muito tempo a executá-la. Durante este período, o atraso na replicação está a aumentar. Quando a réplica concluir esta transação, o período de sincronizaçã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, algumas soluções possíveis incluem:

  • Dividir a transação em várias transações pequenas
  • Divida uma única consulta de escrita grande em lotes mais pequenos
  • Tente separar as consultas SELECT longas de uma transação misturada com DMLs
A alteração das flags de replicação paralela resulta num erro. Foi definido um valor incorreto para uma ou mais destas flags.

Na instância principal que está a apresentar a mensagem de erro, defina as flags de replicação paralela:

  1. Modifique as flags binlog_transaction_dependency_tracking e transaction_write_set_extraction:
    • binlog_transaction_dependency_tracking=COMMIT_ORDER
    • transaction_write_set_extraction=OFF
  2. Adicione a flag slave_pending_jobs_size_max:

    slave_pending_jobs_size_max=33554432

  3. Modifique a flag transaction_write_set_extraction:

    transaction_write_set_extraction=XXHASH64

  4. Modifique a flag binlog_transaction_dependency_tracking:

    binlog_transaction_dependency_tracking=WRITESET

A criação de réplicas falha devido ao limite de tempo. As transações não comprometidas de longa duração na instância principal podem fazer com que a criação de réplicas de leitura falhe.

Recrie a réplica depois de parar todas as consultas em execução.

O que se segue?