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.conf
del server principale prima dihost all all all scram-sha-256
esistente nel file:host alloydbmetadata alloydbmetadata IP_RANGE trust host replication REPLICA_USER IP_RANGE scram-sha-256
Sostituisci 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 della directory dei dati del server primario.
Riavvia il server principale:
Docker
docker restart CONTAINER_NAME
Podman
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_IP
Sostituisci
SOURCE_IP
con 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/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
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.