Para aumentar a capacidade de leitura e a disponibilidade, crie um servidor de réplica do AlloyDB Omni para um servidor AlloyDB Omni existente. Um servidor de réplica fornece um clone de leitura somente do servidor de banco de dados principal. Ele atualiza continuamente os próprios dados para refletir as mudanças nos dados do servidor principal.
As seções a seguir fornecem etapas para configurar o servidor principal do AlloyDB Omni para replicação, configurar o servidor de réplica e verificar o status da replicação no servidor principal.
Para mais detalhes, consulte Instalar o AlloyDB Omni no Kubernetes.
Configurar o servidor principal 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 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 quando o instalou.
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 quando o instalou.
Adicione as linhas a seguir ao arquivo
/DATA_DIR/pg_hba.conf
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 sistema de arquivos que você quer que essa réplica use para o diretório de dados.
Reinicie o servidor principal:
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 principal do AlloyDB Omni para replicar.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 principal do AlloyDB Omni a ser replicada. Se você não informar esse valor, o AlloyDB Omni vai aplicar um valor padrão de5432
.SLOT_NAME
: o rótulo para o 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 principal do AlloyDB Omni a ser replicada. Se você não informar esse valor, o AlloyDB Omni vai aplicar um valor padrão de5432
.SLOT_NAME
: o rótulo para o 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 principal
Para verificar se a replicação está configurada corretamente, execute o seguinte comando no host do servidor principal:
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 saída contém uma linha para cada réplica conectada ao servidor de banco de dados principal.
Depois de configurar a replicação, todas as inserções, atualizações e exclusões em linhas no servidor de banco de dados principal vão ficar legíveis na réplica em segundos.