logical decoding.
Para mais informações sobre replicação, consulte Sobre a replicação no Cloud SQL.
Definir a configuração da réplica externa
Antes de começar
Antes de iniciar essa tarefa, você precisa ter uma instância do Cloud SQL e uma instância externa do PostgreSQL que atendam aos requisitos de réplicas externas.
Requisitos da instância de origem
A instância de origem de uma réplica de leitura externa precisa ser uma instância principal ou independente. Não é possível usar uma réplica de leitura do Cloud SQL como a instância de origem para uma réplica de leitura externa. Às vezes, as réplicas de leitura são recriadas do clone de disco da instância principal, e o estado de replicação para uma réplica de leitura externa não pode ser mantido pela réplica de leitura.
Configurar a instância primária
- Acesse a página "Instâncias do Cloud SQL" no Google Cloud console.
 - Ative o acesso na instância principal do endereço IP da réplica externa.
  
Para informações sobre como ativar o acesso ao IP, consulte Como configurar o acesso para conexões IP.
 - Registre o endereço IP público e o endereço IP de saída público da instância principal para usar posteriormente. Encontre esses valores na página de Visão geral da instância.
 - Clique no ícone do Cloud Shell
  (
) no canto superior direito. - No prompt do Cloud Shell, use o cliente PostgreSQL integrado para
  se conectar à instância principal:
   
gcloud sql connect PRIMARY_INSTANCE_NAME \ --user=postgres
 - Insira a senha raiz. O prompt do postgres será exibido.
 - Crie um usuário do PostgreSQL com o atributo 
REPLICATION.CREATE USER REPLICATION_USER WITH REPLICATION IN ROLE cloudsqlsuperuser LOGIN PASSWORD 'REPLICATION_USER_PASSWORD'; - Instale e configure a extensão pglogical:
   
Edite a instância do Cloud SQL para adicionar e definir as sinalizações a seguir:
cloudsql.enable_pglogicalcloudsql.logical_decodingmax_replication_slotsmax_worker_processesmax_wal_senders- 
     
Para mais informações sobre essas sinalizações, consulte a página de recursos do PostgreSQL.
 
Reinicie o banco de dados, faça login, mude para replication_user e crie a extensão
pglogical:CREATE EXTENSION pglogical;
 - Crie um nó pglogical:
   
Um nó pglogical representa uma instância física do PostgreSQL e armazena detalhes de conexão dela.
SELECT pglogical.create_node( node_name := 'provider', dsn := 'host=PRIMARY_PUBLIC_IP_ADDRESS port=5432 dbname=DATABASE_NAME user=REPLICATION_USER password=REPLICATION_USER_PASSWORD' );
 - Se você estiver começando com um novo banco de dados, crie o mesmo banco de dados e as mesmas tabelas
  nas instâncias principal e de réplica. Por exemplo:
  
CREATE DATABASE test; \connect test; CREATE TABLE replica_test (id SERIAL PRIMARY KEY, data text); INSERT INTO replica_test (data) VALUES ('apple'), ('banana'), ('cherry'); CREATE EXTENSION pglogical;
 - Se você já tiver um banco de dados na instância principal, precisará criar o mesmo na réplica. Para fazer isso, exporte o banco de dados da instância principal para um bucket do Cloud Storage e importe-o para a réplica. Saiba mais sobre como exportar dados do Cloud SQL para um arquivo dump SQL no Cloud Storage.
 - 
   Para aceitar a replicação de diferentes conjuntos de dados para destinos diferentes,
   a pglogical tem o conceito de um conjunto de replicação. Por exemplo, para adicionar uma tabela
   ao conjunto de replicação padrão:
   
SELECT pglogical.replication_set_add_table('default', 'replica_test', true);
 
Configurar a réplica externa
- Crie um usuário especial para replicação e conceda privilégios de replicação:
  
CREATE USER REPLICATION_USER WITH REPLICATION SUPERUSER LOGIN PASSWORD 'REPLICATION_USER_PASSWORD'; - Se você estiver começando com um novo banco de dados, use o
    REPLICATION_USER para criar o mesmo banco de dados e
    tabelas nas instâncias principal e de réplica. Exemplo:
  
CREATE DATABASE test; \connect test; CREATE TABLE replica_test (id SERIAL PRIMARY KEY, data text); INSERT INTO replica_test (data) VALUES ('apple'), ('banana'), ('cherry');
 - Se você estiver propagando a instância da réplica externa
   com um arquivo exportado da instância principal, faça o download do
  arquivo exportado pelo Cloud Storage. Se a réplica externa estiver em uma
  instância do Compute Engine, faça o download do arquivo usando o
  comando 
gcloud storage:gcloud storage cp gs://BUCKET_NAME/DUMP_FILE_NAME .
 - Importe o arquivo para o banco de dados.
psql --user=postgres --password < DUMP_FILE_NAME.
 - Instale 
pglogicalde acordo com o SO. Por exemplo, em sistemas Debian que executam a versão 13 do PostgreSQL,sudo apt-get install postgresql-13-pglogical. - Faça login no banco de dados como o replication_user e defina os
    estes parâmetros:
  
ALTER SYSTEM SET shared_preload_libraries = 'pglogical'; ALTER SYSTEM SET max_replication_slots = #; (where # is the same as you set on the primary). ALTER SYSTEM SET max_worker_processes = #; (where # is the same as you set on the primary). # Logout of the database and restart it. For example, #
sudo /etc/init.d/postgresql restart# Log back in the database as the replication_user. # Since the pglogical extension is created local to each database, you need to # executeCREATE EXTENSION pglogicalin each database you create, so if you # haven't already done that: CREATE EXTENSION pglogical;For more information about these flags, see the PostgreSQL resources page.
 - Crie um nó pglogical:
  
SELECT pglogical.create_node( node_name := 'subscriber', dsn := 'host=REPLICA_PUBLIC_IP_ADDRESS port=5432 dbname=DATABASE_NAME user=REPLICATION_USER password=REPLICATION_USER_PASSWORD' );
 - Crie uma assinatura pglogical:
  
SELECT pglogical.create_subscription( subscription_name := 'SUBSCRIPTION_NAME', provider_dsn := 'host=PRIMARY_PUBLIC_IP_ADDRESS port=5432 dbname=DATABASE_NAME user=REPLICATION_USER password=REPLICATION_USER_PASSWORD' );
 - Verifique o status da assinatura:
  
SELECT * FROM pglogical.show_subscription_status('SUBSCRIPTION_NAME');
 - Se o status aparecer como 
replicating, a configuração foi bem-sucedida. - Insira alguns dados na principal e verifique a réplica para garantir que eles também sejam exibidos.
 
Resolver problemas
Consulte Solução de problemas pglogicalA seguir
- Saiba como gerenciar réplicas.
 - Saiba mais sobre requisitos e práticas recomendadas para a configuração da réplica externa.
 - Saiba mais sobre replicação do PostgreSQL.
 - Saiba mais sobre as configurações de replicação.
 - Saiba mais sobre como replicar a partir de um servidor externo.