Configurar o Cloud SQL e o servidor externo para replicação

Nesta página, descrevemos como configurar o servidor externo para replicação no Cloud SQL, criar uma instância de representação de origem no Cloud SQL e replicar os dados para o Cloud SQL. É preciso seguir todas as etapas desta página antes de seguir as etapas de replicação.

Uma alternativa às etapas descritas nesta página é o Serviço de migração de banco de dados, que oferece replicação contínua ou migração única de banco de dados de um servidor externo para o Cloud SQL.

Antes de começar

Terminologia

  • Servidor externo. O servidor MySQL externo ao Cloud SQL de onde você quer replicar dados. Ele também é conhecido como o banco de dados de origem ou o servidor de banco de dados externo. Pode ser outra instância do Cloud SQL ou qualquer outro servidor de banco de dados, como no local, Amazon Relational Database Service (RDS) e assim por diante.

  • Instância de representação de origem. Uma simulação de uma instância do Cloud SQL que representa o servidor externo para a réplica do Cloud SQL. Ele fica visível no Console do Google Cloud e aparece como uma instância normal do Cloud SQL. No entanto, ele não contém dados, não precisa de configuração ou manutenção nem afeta o faturamento.

  • Réplica do Cloud SQL. A instância do Cloud SQL que é replicada do servidor externo. Também conhecida como réplica de leitura do mestre externo.

  • Replicação da conta de usuário. A conta de usuário do MySQL no servidor externo com permissões suficientes para permitir a replicação entre o servidor externo e a réplica do Cloud SQL.

  • Importação gerenciada. O processo de importação de dados diretamente do servidor externo para a réplica do Cloud SQL. Nessa situação, o Cloud SQL se conecta ao servidor externo usando a conta de usuário de replicação e executa o despejo de dados diretamente no servidor externo para importar dados para a réplica do Cloud SQL.

Configure um projeto do Google Cloud

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud SQL Admin API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud SQL Admin API.

    Enable the API

  8. Verifique se você tem os papéis "Administrador" do Cloud SQL, "Administrador do Storage" e "Leitor do Compute" na conta de usuário.

    Acessar a página IAM

Instalar o Google Cloud SDK

Para configurar a replicação, instale o SDK do Google Cloud para o servidor externo. É recomendável instalar o SDK no servidor externo, a menos que já esteja instalado em outro lugar.

Configurar o servidor externo para replicação

Lista de verificação do servidor externo

  • Verifique se MySQL 5.5, 5.6, 5.7 ou 8.0 está instalado em seu servidor externo. O MySQL Community Edition, Cloud SQL para MySQL, Amazon Aurora e MySQL no Amazon RDS são compatíveis.

    • Use uma versão principal do MySQL na réplica do Cloud SQL que seja igual ou superior à versão do MySQL em execução no servidor externo.
    • Se o MySQL 5.5 estiver instalado no servidor externo, o GTID não é compatível.
  • Verifique se os registros binários estão ativados e se:

  • Anote se o servidor externo tem o GTID ativado. Isso afeta as etapas necessárias para configurar a replicação.

  • Anote se o servidor externo tem permissões globais de bloqueio de leitura. Isso afeta as etapas necessárias para configurar a replicação.

  • Se a réplica do Cloud SQL estiver ativada com um endereço IP privado porque o endereço IP particular de saída não é estático, configure o firewall do servidor externo para permitir o intervalo de IP interno alocado para o acesso de serviço particular da rede VPC que a réplica do Cloud SQL usa como rede privada.

    O firewall do servidor de banco de dados de origem precisa ser configurado para permitir todo o intervalo de IPs interno alocado para a conexão de serviço particular da rede VPC que o destino do Cloud SQL usa como o campo privateNetwork de suas configurações de ipConfiguration.

    Para encontrar o intervalo de IP interno:

    1. No Console do Google Cloud, acesse a página Redes VPC.

      Acessar a página "Redes VPC"

    2. Selecione a rede VPC que você quer usar.

    3. Clique na guia Private Service Connect.

  • Se o servidor externo tiver cláusulas DEFINER (visualizações, eventos, gatilhos ou procedimentos armazenados), dependendo da ordem de quando essas instruções são executadas, a replicação poderá falhar. Saiba mais sobre o uso de DEFINER e as possíveis soluções alternativas no Cloud SQL.

  • O InnoDB é o único mecanismo de armazenamento suportado no Cloud SQL. A migração com o MyISAM pode causar inconsistência nos dados e exigir validação de dados. Para mais informações, consulte Como converter tabelas do MyISAM para o InnoDB na documentação do MySQL.

Configurar retenção de registros binários

Configure o servidor externo para reter os registros binários por pelo menos 24 horas.

Comunidade do MySQL

Se o servidor externo estiver usando o MySQL Community Edition, será possível usar os comandos do MySQL para atualizar as configurações de retenção de registros binários.

Cloud SQL para MySQL

Se o servidor externo estiver usando o Cloud SQL para MySQL, por padrão, seus registros binários serão retidos por sete dias. Você pode alterar essa configuração.

Amazon RDS e Aurora

Se o servidor externo for uma instância do Amazon RDS, será possível usar este comando para atualizar as configurações de retenção de registros binários:

call mysql.rds_set_configuration('binlog retention ', HOURS);
Propriedade Descrição
HORAS O número total de horas de registros binários para a instância do Amazon RDS a ser retida.

Para mais informações, consulte mysql.rds_set_configuration.

Criar uma conta de usuário de replicação

Uma conta de usuário do MySQL dedicada ao gerenciamento de replicação para a réplica do Cloud SQL precisa existir no servidor externo. Essa conta de usuário só precisa ser usada para gerenciar a replicação. Dependendo da abordagem de migração usada, talvez seja necessário conceder permissões ao usuário posteriormente.

Para adicionar uma conta de usuário de replicação, abra um terminal no servidor externo e digite estes comandos do MySQL:

MySQL

      CREATE USER 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD';
      GRANT SELECT, SHOW VIEW ON *.* TO 'USERNAME'@'HOST';
      FLUSH PRIVILEGES;

exemplo

CREATE USER 'replicationUser'@'%' IDENTIFIED BY '8*&fwwd';
GRANT SELECT, SHOW VIEW ON *.* TO 'replicationUser'@'%';
FLUSH PRIVILEGES;
Propriedade Descrição
USERNAME A conta do usuário de replicação no servidor externo.
PASSWORD A senha da conta de usuário da replicação.
HOST Defina como % para aceitar todas as conexões de qualquer host. Em uma etapa posterior, isso será alterado para aceitar apenas conexões da réplica do Cloud SQL.

Configurar uma instância de representação de origem

A instância de representação de origem faz referência ao servidor externo. Ele contém apenas os dados da solicitação do servidor externo. Crie os dados da solicitação e use-os em um comando curl que cria a instância de representação de origem no Cloud SQL.

Criar os dados da solicitação

Os dados da solicitação contêm informações básicas sobre o servidor externo no formato JSON. Os dados da solicitação podem ser configurados para uma réplica do Cloud SQL em uma rede pública ou privada e precisam conter estas informações:

source.json

    {
      "name": "SOURCE_NAME",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "onPremisesConfiguration": {
        "hostPort": "SOURCE_HOST",
        "username": "USERNAME",
        "password": "PASSWORD",
        "caCertificate": "SOURCE_CERT",
        "clientCertificate": "CLIENT_CERT",
        "clientKey": "CLIENT_KEY"
      }
    }

exemplo de importação gerenciada

// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:3306",
    "username": "replicationUser",
    "password": "486#@%*@"
  }
}

exemplo de arquivo dump

// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:"3306",
    "username": "replicationUser",
    "password": "486#@%*@",
    "dumpFilePath": "gs://replica-bucket/source-database.sql.gz",
    "caCertificate": "content of your certificate",
    "clientCertificate": "content of your certificate",
    "clientKey": "content of your client key"
  }
}

exemplo de importação personalizada

// example of source.json for external server that
// - initiates replication from a Cloud SQL custom import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:3306",
    "username": "replicationUser",
    "password": "486#@%*@"
  }
}
Propriedade Descrição
SOURCE_NAME O nome da instância de representação de origem a ser criada.
REGION A região onde você quer que a instância de representação de origem resida.
DATABASE_VERSION A versão do banco de dados em execução no seu servidor externo. As opções são MYSQL_5_6, MYSQL_5_7 ou MYSQL_8_0. .
SOURCE HOST O endereço IPv4 e a porta do servidor externo ou do endereço DNS do servidor externo. Se você usar um endereço DNS, ele poderá conter até 60 caracteres. Se o servidor externo estiver hospedado no Cloud SQL, a porta será 3306.
USERNAME A conta do usuário de replicação no servidor externo.
PASSWORD A senha da conta de usuário da replicação.
BUCKET O nome do bucket que contém o arquivo dump. Inclua somente se você estiver configurando a replicação com um arquivo dump que existe em um bucket do Cloud Storage.
DUMP_FILE Um arquivo no bucket que contém os dados do servidor externo.
CLIENT_CA_CERT O certificado de CA no servidor externo. Inclua somente se SSL/TLS for usado no servidor externo.
CLIENT_CERT O certificado do cliente no servidor externo. Necessário apenas para autenticação servidor-cliente. Inclua somente se SSL/TLS for usado no servidor externo.
CLIENT_KEY O arquivo de chave privada do certificado do cliente no servidor externo. Necessário apenas para autenticação servidor-cliente. Inclua somente se SSL/TLS for usado no servidor externo.

Criar uma instância de representação de origem

Antes de iniciar esta etapa, crie um arquivo JSON que contenha seus dados de solicitação de origem.

Em seguida, para criar a instância de representação de origem no Cloud SQL, abra um terminal e execute os seguintes comandos:

curl

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @JSON_PATH \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances

aplicável

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data @./source.json \
     -X POST \
     https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
Propriedade Descrição
PROJECT_ID O ID do seu projeto no Google Cloud.
JSON_PATH O caminho para o arquivo JSON que contém os dados da solicitação para o servidor externo.

Atualizar uma instância de representação de origem

Se você atualizar os dados da solicitação usando o servidor externo, poderá atualizar a instância de representação de origem atual para usar os valores modificados.

Modificar os dados da solicitação

Atualize os dados da solicitação para incluir os campos que foram alterados. Isso inclui os campos hostPort, username, password, caCertificate, clientCertificate e clientKey. Depois de atualizar os dados da solicitação, use-os em um comando curl para atualizar a instância no Cloud SQL.

O exemplo a seguir mostra a atualização dos campos username e password com um nome de usuário e uma senha diferentes:

source.json

    {
      "name": "SOURCE_NAME",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "onPremisesConfiguration": {
        "username": "NEW_USERNAME",
        "password": "NEW_PASSWORD"
      }
    }

exemplo de importação gerenciada

// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "525#@%*@"
  }
}

exemplo de arquivo dump

// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "486#@%*@"
  }
}

exemplo de importação personalizada

// example of source.json for external server that
// - initiates replication from a Cloud SQL custom import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "486#@%*@"
  }
}
Propriedade Descrição
SOURCE_NAME O nome da instância de representação de origem.
REGION A região em que a instância de representação de origem reside.
DATABASE_VERSION A versão do banco de dados em execução no seu servidor externo. As opções são MYSQL_5_6, MYSQL_5_7 ou MYSQL_8_0. .
NEW_USERNAME A nova conta do usuário de replicação no servidor externo.
NEW_PASSWORD A senha da nova conta.

Modificar uma instância de representação de origem

Antes de iniciar esta etapa, crie um arquivo JSON que contenha seus dados de solicitação da réplica.

Em seguida, para modificar a instância de representação de origem no Cloud SQL, abra um terminal e execute os seguintes comandos:

curl

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @JSON_PATH \
         -X PATCH \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/SOURCE_NAME

aplicável

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data @./source.json \
     -X PATCH \
     https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/cloudsql-source-instance
Propriedade Descrição
PROJECT_ID O ID do seu projeto no Google Cloud.
JSON_PATH O caminho para o arquivo JSON que contém os dados da solicitação para o servidor externo.
SOURCE_NAME O nome da instância de representação de origem.

Configurar uma réplica do Cloud SQL

A réplica do Cloud SQL contém os dados do servidor externo. Nesta etapa, você cria os dados da solicitação e os usa em um comando curl que cria a réplica do Cloud SQL no Cloud SQL.

Criar os dados da solicitação

Os dados da solicitação contêm informações básicas sobre o servidor externo e a réplica do Cloud SQL no formato JSON. Os dados da solicitação podem ser configurados para uma réplica do Cloud SQL em uma rede pública ou privada e precisam conter estas informações:

replica.json

    {
        "settings": {
            "tier": "TIER",
            "dataDiskSizeGb": "DISK_SIZE",
            "ipConfiguration": {
                "ipv4Enabled": "PUBLIC_IP_STATUS",
                "privateNetwork": "projects/PROJECT_ID/global/networks/NETWORK_NAME"
             },
             "availabilityType": "AVAILABILITY_TYPE"
        },
        "masterInstanceName": "SOURCE_REPRESENTATION_INSTANCE_NAME",
        "region": "SOURCE_REGION",
        "databaseVersion": "DATABASE_VERSION",
        "name": "REPLICA_NAME"
    }

aplicável

    {
        "settings": {
            "tier": "db-custom-4-15360",
            "dataDiskSizeGb": "100"
        },
        "masterInstanceName": "source-instance",
        "region": "us-central1",
        "databaseVersion": "MYSQL_5_7",
        "name": "replica-instance"
    }
Propriedade Descrição
TIER O tipo de máquina para hospedar a instância da réplica. Se você não souber qual tipo de máquina usar, comece com db-custom-2-7680. É possível alterar o tamanho e outros valores compatíveis posteriormente, se necessário.
DISK_SIZE O tamanho de armazenamento da réplica do Cloud SQL, em GB.
PUBLIC_IP_STATUS Determina se a instância recebe um endereço IP público. Por padrão, o valor dessa propriedade é true. Para desativar a atribuição de um endereço IP público para a réplica, defina o valor como false. Se o seu projeto tem a constraints/sql.restrictPublicIp política da organização ativado, para criar a réplica do Cloud SQL, defina o valor do atributo ipv4Enabled do app para false. Para mais informações sobre como desativar a atribuição de endereço IP público, consulte Desativar IP público.
PROJECT_ID Se a réplica do Cloud SQL estiver em uma rede privada, inclua a propriedade privateNetwork no arquivo replica.json. Para PROJECT_ID, especifique o ID do projeto no Google Cloud.
NETWORK_NAME O nome da rede privada a ser usada com a réplica do Cloud SQL.
AVAILABILITY_TYPE O tipo de disponibilidade da réplica do Cloud SQL. Por padrão, o valor é ZONAL. Para criar a réplica de alta disponibilidade, defina o valor como REGIONAL. Para saber mais sobre os valores permitidos, consulte SqlAvailabilityType.
Depois de criar uma réplica de alta disponibilidade do servidor externo, não é possível alterá-la para uma réplica que não seja de alta disponibilidade. Isso também se aplica inversamente. Não é possível alterar uma réplica que não seja de alta disponibilidade do servidor externo para uma réplica de alta disponibilidade.
Uma tentativa de failover manual pode levar a uma migração irrecuperável quando a instância ainda está carregando os dados iniciais ou a uma inatividade temporária se a instância já estiver em replicação a partir da fonte. Verifique o status de replicação.
SOURCE_REPRESENTATION_INSTANCE_NAME O nome da instância de representação de origem.
SOURCE_REGION A região atribuída à instância de representação de origem.
DATABASE_VERSION A versão do banco de dados a ser usada com a réplica do Cloud SQL. As opções para essa versão são MYSQL_5_6, MYSQL_5_7 ou MYSQL_8_0. Corresponda a versão do banco de dados em execução no servidor externo ou defina o valor como, no máximo, uma versão posterior.
REPLICA_NAME O nome da réplica do Cloud SQL a ser criada.

Crie a réplica do Cloud SQL

Antes de iniciar esta etapa, crie um arquivo JSON que contenha seus dados de solicitação da réplica. Em seguida, para criar uma réplica do Cloud SQL, abra um terminal do Cloud Shell e execute estes comandos:

curl

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @JSON_PATH \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances

aplicável

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @./replica.json \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
Propriedade Descrição
PROJECT_ID O ID do projeto no Google Cloud, que precisa ser o mesmo da instância de origem.
JSON_PATH O caminho para o arquivo JSON que contém os dados da solicitação para a réplica do Cloud SQL.

Verificar a configuração

Para garantir que suas instâncias foram configuradas corretamente, acesse a página Instâncias do Cloud SQL.

Você verá sua instância de representação de origem e a réplica do Cloud SQL em uma listagem semelhante a esta:

ID da instância Tipo IP público
(-) source-representation-instance Principal externa do banco de dados 10.68.48.3:3306
     replica-instance Réplica de leitura do banco de dados 34.66.48.59

Verifique também se você tem a permissão cloudsql.instances.migrate na réplica do Cloud SQL. Essa permissão está incluída nos papéis do IAM cloudsql.admin ou cloudsql.editor.

Adicionar usuários à réplica do Cloud SQL

Não é possível importar contas de usuário do banco de dados do servidor externo, mas é possível criar essas contas em uma réplica do Cloud SQL. Faça isso antes da replicação pelo servidor externo.

Conseguir o endereço IP de saída da réplica do Cloud SQL

Use o endereço IP de saída da réplica do Cloud SQL para criar uma conexão segura entre o servidor externo e a réplica do Cloud SQL. Esse endereço IP não será cobrado.

Console

Para receber o endereço IP de saída da réplica, faça o seguinte:

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

    Acesse "Instâncias do Cloud SQL"

  2. Ao lado do endereço IP público da réplica do Cloud SQL, posicione o cursor sobre a dica Mais informações e recupere o endereço IP de saída.

    O endereço IP de saída não é o endereço IP exibido na listagem principal da réplica no console do Google Cloud.

gcloud

Para saber o endereço IP de saída da réplica, execute o seguinte comando:

gcloud sql instances describe REPLICA_NAME --format="default(ipAddresses)"
Propriedade Descrição
REPLICA_NAME O nome da réplica do Cloud SQL com o endereço IP público de saída que você quer recuperar.

Permitir conexões de entrada no servidor externo

A réplica do Cloud SQL precisa se conectar ao servidor externo para que a replicação seja bem-sucedida. Você precisa configurar o firewall de rede do servidor externo para aceitar conexões provenientes do endereço IP de saída da réplica do Cloud SQL se as seguintes condições forem aplicáveis:

  • O servidor externo está protegido por firewall ou alguma outra restrição de rede.
  • Sua réplica do Cloud SQL está usando um IP público.

Para se conectar à réplica do Cloud SQL, use o endereço IP principal da réplica. Esse endereço IP é exibido no console do Google Cloud.

Atualizar a instância de representação de origem para permitir a replicação para a réplica do Cloud SQL

Depois de configurar a instância de representação de origem para a réplica do Cloud SQL, talvez seja necessário atualizar a instância de representação de origem. Por exemplo, estes cenários exigem uma atualização nas configurações:

  • O host, a porta ou o IP do servidor externo é alterado.
  • Se você quiser usar um usuário diferente de replicação do MySQL.
  • A senha do usuário de replicação do MySQL é alterada.
  • Os certificados SSL usados para se conectar com segurança à alteração no servidor externo.

Semeie a réplica do Cloud SQL

Há três opções para executar o carregamento inicial de dados do servidor externo na réplica do Cloud SQL:

Qual opção é melhor para você?

Diagrama de fluxo de usuários do Cloud SQL

Replicação do monitor

Quando a réplica do Cloud SQL termina o carregamento de dados inicial, ela se conecta ao servidor externo e aplica todas as atualizações feitas após a operação de exportação. Confirme o status de replicação.

É importante verificar o status da replicação antes de promover a réplica para uma instância autônoma. Se o processo de replicação não for concluído com êxito, uma réplica promovida não terá todas as alterações do servidor externo.

Se o atraso da replicação não estiver em direção a 0, tome medidas para resolver o problema. Verifique essas métricas: /postgresql/external_sync/initial_sync_complete, postgresql/external_sync/max_replica_byte_lag e database/replication/state. Veja a lista de métricas do Cloud SQL.

Depois que a réplica do Cloud SQL alcançar o servidor externo e não houver atraso de replicação na réplica do Cloud SQL, conecte-se ao banco de dados. Execute os comandos adequados do banco de dados para garantir que o conteúdo seja o esperado em comparação com o servidor externo. Retenha seu servidor externo até que as validações necessárias sejam concluídas.

Configurar uma réplica em cascata

Após a migração, é possível criar réplicas de leitura em cascata na sua réplica do Cloud SQL antes de promover a réplica do Cloud SQL.

Só será possível criar réplicas em cascata para a instância do Cloud SQL se você estiver usando a replicação GTID.

Para criar uma réplica em cascata, execute os seguintes comandos:

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
          --project=cascade-replica PARENT_REPLICA_NAME
    Substitua PARENT_REPLICA_NAME pelo nome da réplica mãe.
  2. Crie a nova réplica especificando a réplica do Cloud SQL como a instância principal usando a sinalização --master-instance-name:

    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 do Cloud SQL
  3. Após a criação da réplica, é possível ver que as alterações feitas na instância principal são replicadas por 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": "EXTERNAL_SERVER_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"

Promova a réplica

Promova sua réplica seguindo estas etapas:

  1. Promova a réplica a uma instância principal. O GTID e os registros binários estão ativados, e os backups programados são ativados na réplica promovida.
  2. Adicione réplicas de leitura à instância.
  3. Opcional: configure sua instância para alta disponibilidade (HA, na sigla em inglês). Para evitar mais inatividade, é possível ativar a alta disponibilidade ao configurar uma réplica definindo AVAILABILITY_TYPE como REGIONAL.

A seguir