Per aumentare il throughput e la disponibilità in lettura, puoi creare un server replica AlloyDB Omni per un server AlloyDB Omni esistente. Un server replica fornisce una copia di sola lettura del tuo server di database principale. Aggiorna continuamente i propri dati per riflettere le modifiche ai dati del server principale.
Le sezioni seguenti descrivono i passaggi per configurare il server principale AlloyDB Omni per la replica, configurare il server di replica e verificare lo stato della replica sul server principale.
Per informazioni dettagliate, consulta Installare AlloyDB Omni su Kubernetes.
Configura il server principale per la replica
Aggiorna le impostazioni di rete o del firewall dell'host del server principale in modo che consenta il traffico in entrata dall'host del server 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 della replica.PASSWORD
: la password per l'utente della replica.CONTAINER_NAME
: il nome assegnato al contenitore AlloyDB Omni al momento dell'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 della replica.PASSWORD
: la password per l'utente della replica.CONTAINER_NAME
: il nome assegnato al contenitore AlloyDB Omni al momento dell'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 replica. Ad esempio,203.0.113.0/24
.DATA_DIR
: il percorso della directory dei dati del server principale.
Riavvia il server principale:
Docker
docker restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Crea e configura il server replica
Per creare e configurare un server replica AlloyDB Omni, completa i seguenti passaggi:
Assicurati che la replica abbia connettività di rete con il server principale:
ping SOURCE_IP
Sostituisci
SOURCE_IP
con l'indirizzo IP dell'istanza principale 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
Verificare lo stato della replica sul server principale
Per verificare che la replica sia configurata correttamente, esegui il seguente comando sull'host del server principale:
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 collegata al server di database principale.
Dopo aver configurato la replica, tutte le inserzioni, gli aggiornamenti ed eliminazioni delle righe nel server database principale diventano leggibili sulla replica in pochi secondi.