Le sezioni seguenti forniscono i passaggi per configurare il server primario AlloyDB Omni per la replica, configurare il server di replica e verificare lo stato della replica sul server primario.
Per i dettagli, consulta Installare AlloyDB Omni su Kubernetes.
Configura il server principale per la replica
Aggiorna le impostazioni di rete o firewall dell'host del server principale in modo che consenta il traffico in entrata dall'host del server di replica tramite la porta Postgres del server principale.
Crea un utente di replica:
Docker
docker exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"Sostituisci quanto segue:
REPLICA_USER: il nome dell'utente replica.PASSWORD: la password per l'utente replica.CONTAINER_NAME: il nome che hai assegnato al container AlloyDB Omni durante l'installazione.
Podman
podman exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"Sostituisci quanto segue:
REPLICA_USER: il nome dell'utente replica.PASSWORD: la password per l'utente replica.CONTAINER_NAME: il nome che hai assegnato al container AlloyDB Omni durante l'installazione.
Aggiungi le seguenti righe al file
/DATA_DIR/pg_hba.confprima dihost all all all scram-sha-256esistente nel file:host alloydbmetadata alloydbmetadata IP_RANGE trust host replication REPLICA_USER IP_RANGE scram-sha-256Sostituisci quanto segue:
IP_RANGE: l'intervallo IP, in notazione CIDR, della subnet in cui si trova la macchina di replica. Ad esempio,203.0.113.0/24.DATA_DIR: il percorso del file system che vuoi che questa replica utilizzi per la directory dei dati.
Riavvia il server principale:
Docker
docker restart CONTAINER_NAMEPodman
podman restart CONTAINER_NAME
Crea e configura il server di replica
Per creare e configurare un server di replica AlloyDB Omni, completa i seguenti passaggi:
Assicurati che la replica abbia la connettività di rete al server principale:
ping SOURCE_IPSostituisci
SOURCE_IPcon l'indirizzo IP dell'istanza principale di AlloyDB Omni da cui eseguire la replica.Assicurati che la replica possa connettersi al server principale:
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;"L'output dovrebbe essere simile al seguente:
systemid | timeline | xlogpos | dbname ---------------------+----------+-----------+-------- 7376500460465963036 | 1 | 0/454B670 | (1 row)La replica deve avere una posizione di archiviazione permanente sul 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"Sostituisci quanto segue:
SOURCE_PORT: la porta TCP dell'istanza principale di AlloyDB Omni da cui eseguire la replica. Se non fornisci questo valore, AlloyDB Omni applica un valore predefinito di5432.SLOT_NAME: l'etichetta per il nome dello slot di replica.
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"Sostituisci quanto segue:
SOURCE_PORT: la porta TCP dell'istanza principale di AlloyDB Omni da cui eseguire la replica. Se non fornisci questo valore, AlloyDB Omni applica un valore predefinito di5432.SLOT_NAME: l'etichetta per il nome dello slot di replica.
Avvia l'istanza replica:
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/alloydbomniPodman
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
Verifica lo stato della replica sul server primario
Per verificare che la replica sia configurata correttamente, esegui questo comando sull'host del server primario:
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"La tabella di output contiene una riga per ogni replica connessa al server di database principale.
Dopo aver configurato la replica, tutti gli inserimenti, gli aggiornamenti e le eliminazioni di righe nel server di database primario diventano leggibili nella replica in pochi secondi.