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

O Cloud SQL oferece suporte a migrações contínuas de bancos de dados de origem para bancos de dados de destino do Cloud SQL.

Os bancos de dados de origem compatíveis com o PostgreSQL incluem o seguinte:

  • PostgreSQL 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15 e 16 autogerenciados (no local ou em qualquer VM de nuvem totalmente controlada)
  • Amazon RDS 9.6.10+, 10.5+, 11.1+, 12, 13, 14, 15 e 16
  • Amazon Aurora 10.11+, 11.6+, 12.4+ e 13.3+, 14, 15 e 16
  • Cloud SQL 9.6, 10, 11, 12, 13, 14, 15 e 16

Para configurar a origem, é preciso ajustar a instância de origem e os bancos de dados de origem básicos.

Lista de verificação do servidor externo

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.

Configurar a instância de origem

Para configurar sua instância de origem, siga estas etapas:

  1. Se a instância de origem não incluir o banco de dados postgres, crie-o.
  2. Instale o pacote pglogical na instância de origem.
  3. Defina os seguintes parâmetros, conforme necessário.

    Se a instância de origem do PostgreSQL for Amazon RDS, inclua esses parâmetros em um novo grupo de parâmetros e anexe o grupo à instância.

    • Se a origem for o Cloud SQL, defina as sinalizações cloudsql.logical_decoding e cloudsql.enable_pglogical como on.

      Para ativar as sinalizações no Cloud SQL, consulte Como configurar sinalizações do banco de dados.

    • Defina shared_preload_libraries para incluir pglogical usando o seguinte comando:

      ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
            
    • Defina wal_level como logical usando o seguinte comando:

          ALTER SYSTEM SET wal_level = 'logical';
          

      Se a instância de origem do PostgreSQL for Amazon RDS, defina o parâmetro rds.logical_replication como 1 para ativar os registros WAL no nível de logical.

    • Defina wal_sender_timeout como 0 usando o seguinte comando:

      ALTER SYSTEM SET wal_sender_timeout = 0;

      O valor 0 desativa o mecanismo de tempo limite usado para encerrar conexões de replicação inativas.

    • Defina max_replication_slots como o número máximo de slots de replicação compatíveis com a instância de origem. Use o comando a seguir, depois de substituir # pelo número:

      ALTER SYSTEM SET max_replication_slots = #;

      O Cloud SQL requer um slot para cada banco de dados migrado. Especifique pelo menos o número de assinaturas que precisam ser conectadas, com algumas reservas para sincronização de tabelas.

      Por exemplo, se a instância de origem tiver cinco bancos de dados e dois jobs de migração forem criados para a origem, o número de slots de replicação precisará ser pelo menos 5 * 2 = 10, além do número de slots de replicação que você já usa.

    • Defina max_wal_senders como pelo menos max_replication_slots, além do número de remetentes já usados na sua instância. Use o seguinte comando, substituindo # pelo número total de processos de remetentes WAL em execução simultaneamente:

      ALTER SYSTEM SET max_wal_senders = #;

      Por exemplo, se o parâmetro max_replication_slots estiver definido como 10 e você já estiver usando dois remetentes, o número de processos de remetentes WAL em execução ao mesmo tempo será 10 + 2. = 12.

    • Defina max_worker_processes como, pelo menos, o número de bancos de dados na instância de origem e o número de processos de worker já usados na instância. Use o comando a seguir, depois de substituir # pelo número total:

      ALTER SYSTEM SET max_worker_processes = #;
  4. Os parâmetros que você está definindo nesta etapa se aplicam a um servidor de banco de dados do PostgreSQL em execução. Você também pode tornar essas mudanças persistentes incluindo-as no arquivo postgresql.conf.

  5. Se a réplica do Cloud SQL usar um IP privado, configure o firewall do servidor externo para permitir o intervalo de IP interno alocado para o acesso a serviços particulares da rede VPC da réplica.
  6. Para aplicar as alterações na configuração, reinicie a instância de origem.

Ativar o monitoramento de atraso de replicação para versões do PostgreSQL anteriores à 9.6

Se você estiver migrando de uma versão do PostgreSQL anterior à 9.6, a métrica de atraso da replicação não estará disponível por padrão. É possível usar uma das três alternativas para rastrear essa métrica e garantir um tempo de inatividade mínimo ao promover o banco de dados:

  • Opção 1: conceda ao servidor externo do Cloud SQL uma consulta específica para que ele possa rastrear o atraso de replicação. Usando um usuário com o privilégio SUPERUSER, execute o seguinte:

    1. Defina a função a seguir para permitir que o servidor externo consulte o atraso de replicação.

      CREATE OR REPLACE FUNCTION pg_stat_replication_user()
      RETURNS TABLE (
      pid               integer                  ,
      usesysid          oid                      ,
      username          name                    ,
      application_name  text                     ,
      client_addr       inet                     ,
      client_hostname   text                     ,
      client_port       integer                  ,
      backend_start     timestamp with time zone ,
      backend_xmin      xid                      ,
      state             text                     ,
      sent_location     pg_lsn                   ,
      write_location    pg_lsn                   ,
      flush_location    pg_lsn                   ,
      replay_location   pg_lsn                   ,
      sync_priority     integer                  ,
      sync_state        text
      )
      LANGUAGE SQL
      SECURITY DEFINER
      AS $$
       SELECT *
       FROM pg_catalog.pg_stat_replication;
      $$;
      
    2. Conceda a permissão EXECUTE ao usuário executando os seguintes comandos:

      1. REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
      2. GRANT EXECUTE ON FUNCTION pg_stat_replication_user() to {replication_user};
  • Opção 2: conceda o privilégio SUPERUSER diretamente ao usuário usado para se conectar à instância de origem. Isso permite que o servidor externo leia o atraso de replicação diretamente.

  • Opção 3: acompanhe o atraso da replicação de maneira independente usando a seguinte consulta:

        SELECT current_timestamp, application_name,
        pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.sent_location) AS sent_location_lag,
        pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.write_location) AS write_location_lag,
        pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.flush_location) AS flush_location_lag,
        pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.replay_location) AS replay_location_lag
        FROM pg_stat_replication
        WHERE application_name like 'cloudsql%';
      

    Nesta opção, o Cloud SQL não reflete a métrica de atraso da replicação nos gráficos ou nas respostas da API.

Configurar os bancos de dados de origem

O servidor externo do Cloud SQL migra todos os bancos de dados na instância de origem diferentes do seguinte:

  • Para origens locais: bancos de dados de modelos template0 e template1
  • Para origens de Amazon RDS: template0, template1 e rdsadmin
  • Para origens do Cloud SQL: bancos de dados de modelos template0 e template1

Faça o seguinte em cada banco de dados na instância de origem que não esteja incluído na lista anterior:

  1. Para instalar a extensão pglogical, execute o seguinte comando em cada banco de dados na instância de origem:

    CREATE EXTENSION IF NOT EXISTS pglogical

    Para tabelas que não têm chaves primárias, o Cloud SQL oferece suporte à migração do snapshot inicial e das instruções INSERT durante a fase de captura de dados alterados (CDC). Migre as instruções UPDATE e DELETE manualmente.

  2. Conecte-se à instância e execute os comandos a seguir para definir privilégios para o usuário em cada um dos bancos de dados migrados e para o banco de dados padrão postgres.

    O usuário que você usa para se conectar à instância de origem é configurado como o usuário na página Perfis de conexão. É possível criar um novo usuário ou reutilizar um já existente.

    • Em todos os esquemas em cada banco de dados a ser migrado, exceto o esquema de informações e os esquemas que começam com pg_, execute o seguinte comando:

      GRANT USAGE on SCHEMA schema to username;
      GRANT SELECT on ALL SEQUENCES in SCHEMA schema to username;
      GRANT SELECT on ALL TABLES in SCHEMA schema to username;
    • Em cada banco de dados a ser migrado, execute o seguinte comando:

      GRANT USAGE on SCHEMA pglogical to PUBLIC;
    • Para receber informações de replicação de bancos de dados de origem, em todos os bancos de dados, execute o seguinte comando:

      GRANT SELECT on ALL TABLES in SCHEMA pglogical to username;
    • Se sua origem for o Amazon RDS, execute o seguinte comando:

      GRANT rds_replication to username;

      Caso contrário, execute o seguinte comando:

      ALTER USER username with REPLICATION;

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": "POSTGRES_9_6",
  "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 POSTGRES_9_6, POSTGRES_10, POSTGRES_11, POSTGRES_12, POSTGRES_13, POSTGRES_14, POSTGRES_15 ou POSTGRES_16.
SOURCE HOST O endereço IPv4 e a porta do servidor externo ou do endereço DNS do servidor externo. Se o servidor externo estiver hospedado no Cloud SQL, a porta será 5432.
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

exemplo

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": "POSTGRES_9_6",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "525#@%*@"
  }
}
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 POSTGRES_9_6, POSTGRES_10, POSTGRES_11, POSTGRES_12, POSTGRES_13, POSTGRES_14, POSTGRES_15 ou POSTGRES_16.
NEW_USERNAME A nova conta de 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

exemplo

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

exemplo

    {
        "settings": {
            "tier": "db-custom-4-15360",
            "dataDiskSizeGb": "100"
        },
        "masterInstanceName": "source-instance",
        "region": "us-central1",
        "databaseVersion": "POSTGRES_14",
        "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 POSTGRES_9_6, POSTGRES_10, POSTGRES_11, POSTGRES_12, POSTGRES_13, POSTGRES_14, POSTGRES_15 ou POSTGRES_16. 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

exemplo

    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:5432
     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.
  • Você quer usar outro usuário de replicação do PostgreSQL.
  • A senha do usuário de replicação do PostgreSQL é alterada.
  • Os certificados SSL usados para se conectar com segurança à alteração no servidor externo.

Semeie a réplica do Cloud SQL

Para o carregamento inicial de dados do servidor externo na réplica do Cloud SQL, use uma importação gerenciada. Ela usa um serviço que extrai dados do servidor externo e os importa diretamente para a instância do Cloud SQL. Para mais informações, consulte Como usar uma importação gerenciada para configurar a replicação de bancos de dados externos.

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.

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. Clique na guia Réplicas da réplica que atuará como mãe da réplica que você quer criar.
  3. Clique em Criar réplica.
  4. 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.
  5. Clique em Criar.

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

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

gcloud

  1. Crie a nova réplica especificando a réplica do Cloud SQL como a instância principal usando a sinalização --master-instance-name:
  2. 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. 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",
        }
    }
  2. 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.
  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.

Limitações

  • Se você instalar extensões nos bancos de dados de origem externos que não são compatíveis com o Cloud SQL, essas extensões não serão migradas ao migrar os bancos de dados para uma instância de destino. O Cloud SQL não irá migrar essas extensões. Para garantir uma migração tranquila, verifique se nenhum objeto ou aplicativo faz referência às extensões. Antes de prosseguir com a migração, recomendamos remover as extensões e todas as referências dos bancos de dados de origem.

    Para mais informações sobre as extensões compatíveis com o Cloud SQL, consulte Configurar extensões do PostgreSQL.

  • Se você instalar a extensão pg_cron nos bancos de dados de origem externos, o Cloud SQL não irá migrar a extensão nem as configurações cron associadas a ela ao migrar os bancos de dados para uma instância de destino. Depois de migrar os bancos de dados e promover a réplica, o Google recomenda que você ative novamente a extensão pg_cron em cada banco de dados migrado.

A seguir