Crea una replica di sola lettura

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

  1. 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.

  2. 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 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 della replica.
    • PASSWORD: la password per l'utente della replica.
    • CONTAINER_NAME: il nome assegnato al contenitore AlloyDB Omni al momento dell'installazione.
  3. Aggiungi le seguenti righe al file /DATA_DIR/pg_hba.conf prima di host 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 del file system che vuoi che venga utilizzato da questa replica per la directory dei dati.
  4. 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:

  1. 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.

  2. 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)
    
  3. 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 di 5432.
    • 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 di 5432.
    • SLOT_NAME: l'etichetta per il nome dello slot di replica.
  4. 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.

Passaggi successivi