Nas seções a seguir, mostramos as etapas para configurar o servidor primário do AlloyDB Omni para replicação, configurar o servidor de réplica e verificar o status da replicação no servidor primário.
Antes de começar
Antes de continuar, instale e configure o AlloyDB Omni usando o pacote RPM. Para mais informações, consulte Instalar o AlloyDB Omni usando o RPM.
Configurar o servidor primário para replicação
Atualize as configurações de rede ou firewall do host do servidor primário para permitir o tráfego de entrada do host do servidor de réplica pela porta do Postgres do servidor primário.
Crie um usuário de réplica:
psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'; grant pg_read_all_settings to REPLICA_USER;"Adicione as seguintes linhas ao arquivo
/DATA_DIR/pg_hba.confdo servidor primário antes dehost all all all scram-sha-256que existe no arquivo:host alloydbmetadata alloydbmetadata IP_RANGE trust host replication REPLICA_USER IP_RANGE scram-sha-256Substitua:
IP_RANGE: o intervalo de IP, na notação CIDR, da sub-rede em que a máquina de réplica está localizada. Por exemplo,203.0.113.0/24.DATA_DIR: o caminho do diretório de dados do servidor primário.
Reinicie o servidor primário:
sudo systemctl restart alloydbomni18
Criar e configurar o servidor de réplica
Para criar e configurar um servidor de réplica do AlloyDB Omni, siga estas etapas:
Verifique se a réplica tem conectividade de rede com o servidor primário:
ping SOURCE_IPSubstitua
SOURCE_IPpelo endereço IP da instância primária do AlloyDB Omni da qual será feita a replicação.Verifique se a réplica pode se conectar ao servidor primário:
psql "host=SOURCE_IP user=REPLICA_USER replication=1" -c "IDENTIFY_SYSTEM;"A saída será parecida com esta:
systemid | timeline | xlogpos | dbname ---------------------+----------+-----------+-------- 7376500460465963036 | 1 | 0/454B670 | (1 row)A réplica precisa ter um local de armazenamento persistente no disco:
sudo -u postgres pg_basebackup \ --pgdata=DATA_DIR \ --checkpoint=fast \ --host="SOURCE_IP" \ --port="SOURCE_PORT" \ --username=REPLICA_USER \ --create-slot \ --write-recovery-conf \ --slot="SLOT_NAME"Substitua:
SOURCE_PORT: a porta TCP da instância primária do AlloyDB Omni da qual será feita a replicação. Se você não fornecer esse valor, o AlloyDB Omni vai aplicar o valor padrão5432.SLOT_NAME: o rótulo do nome do slot de replicação.DATA_DIR: o caminho do diretório de dados do servidor de réplica.
Inicie a instância da réplica:
sudo systemctl start alloydbomni18
Verificar o status da replicação no servidor primário
Para verificar se a replicação está configurada corretamente, execute o seguinte comando no host do servidor primário:
psql -h localhost -U postgres -c "select * from pg_stat_replication"A tabela de resposta contém uma linha para cada réplica conectada ao servidor de banco de dados primário.
Depois que você configura a replicação, todas as inserções, atualizações e exclusões de linhas no servidor de banco de dados primário ficam legíveis na réplica em poucos segundos.
Escalar cargas de trabalho de leitura usando pools de leitura
Para escalonar os requisitos de relatórios e somente leitura, provisione várias réplicas de streaming assíncronas para formar um pool de leitura. É possível acessar o pool de leitura conectando-se diretamente aos endereços IP dos nós de réplica.
Antes de começar
Verifique se você criou o REPLICA_USER com privilégios REPLICATION no servidor primário. Também é necessário garantir que o arquivo pg_hba.conf do servidor primário esteja configurado para permitir conexões de replicação dos endereços IP dos nós de réplica.
Provisionar várias réplicas somente leitura
Para criar várias réplicas, repita estas etapas para cada nó de réplica que você quer no pool.
Em cada nó de réplica, execute o comando pg_basebackup, fornecendo um nome de slot de replicação exclusivo para cada nó:
sudo -u postgres pg_basebackup \ --pgdata=DATA_DIR \ --checkpoint=fast \ --host="SOURCE_IP" \ --port="SOURCE_PORT" \ --username=REPLICA_USER \ --create-slot \ --write-recovery-conf \ --slot="UNIQUE_SLOT_NAME_PER_NODE" ```Once the backup is complete, start the database service on each replica:```posix-terminal sudo systemctl start alloydbomni18