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.
Para mais detalhes, consulte Instalar o AlloyDB Omni no Kubernetes.
Configurar o servidor primário para replicação
Atualize as configurações de rede ou firewall do host do servidor principal para permitir o tráfego de entrada do host do servidor de réplica pela porta do Postgres do servidor principal.
Crie um usuário de replicação:
Docker
docker exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"
Substitua:
REPLICA_USER
: o nome do usuário da réplica.PASSWORD
: a senha do usuário da réplica.CONTAINER_NAME
: o nome que você atribuiu ao contêiner do AlloyDB Omni ao instalá-lo.
Podman
podman exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"
Substitua:
REPLICA_USER
: o nome do usuário da réplica.PASSWORD
: a senha do usuário da réplica.CONTAINER_NAME
: o nome que você atribuiu ao contêiner do AlloyDB Omni ao instalá-lo.
Adicione as seguintes linhas ao arquivo
/DATA_DIR/pg_hba.conf
do servidor principal antes dehost all all all scram-sha-256
, que já existe no arquivo:host alloydbmetadata alloydbmetadata IP_RANGE trust host replication REPLICA_USER IP_RANGE scram-sha-256
Substitua:
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 principal.
Reinicie o servidor primário:
Docker
docker restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
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 principal:
ping SOURCE_IP
Substitua
SOURCE_IP
pelo 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 principal:
Docker
docker run -it --rm google/alloydbomni psql "host=SOURCE_IP user=REPLICA_USER replication=1" -c "IDENTIFY_SYSTEM;"
Podman
podman run -it --rm google/alloydbomni 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 permanente no disco:
Docker
mkdir alloydb && docker run --rm -it \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v "$PWD/alloydb":/var/lib/postgresql/data \ -p 5432:5432 \ --user $(id -u):$(id -g) \ google/alloydbomni \ /usr/lib/postgresql/15/bin/pg_basebackup \ --pgdata=/var/lib/postgresql/data/pgdata \ --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.
Podman
mkdir alloydb && podman run --rm -it \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v "$PWD/alloydb":/var/lib/postgresql/data \ -p 5432:5432 \ --user $(id -u):$(id -g) \ google/alloydbomni \ /usr/lib/postgresql/15/bin/pg_basebackup \ --pgdata=/var/lib/postgresql/data/pgdata \ --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.
Inicie a instância de réplica:
Docker
docker run --detach \ --name pg-service \ -e POSTGRES_PASSWORD=a \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v "$PWD/alloydb":/var/lib/postgresql/data \ -v /dev/shm:/dev/shm \ -p 5432:5432 \ --user $(id -u):$(id -g) \ google/alloydbomni
Podman
podman run --detach \ --name pg-service \ -e POSTGRES_PASSWORD=a \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v "$PWD/alloydb":/var/lib/postgresql/data \ -v /dev/shm:/dev/shm \ -p 5432:5432 \ --user $(id -u):$(id -g) \ google/alloydbomni
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:
Docker
docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "select * from pg_stat_replication"
Podman
podman exec -it CONTAINER_NAME 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.