Crea una replica di sola lettura

Seleziona una versione della documentazione:

Per aumentare la velocità effettiva di lettura e la disponibilità, puoi creare un server di replica AlloyDB Omni per un server AlloyDB Omni esistente. Un server di replica fornisce un clone di sola lettura del server di database principale. Aggiorna continuamente i propri dati per riflettere le modifiche ai dati del server principale.

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

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

  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 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.
  3. Aggiungi le seguenti righe al file /DATA_DIR/pg_hba.conf del server principale 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 di replica. Ad esempio, 203.0.113.0/24.
    • DATA_DIR: il percorso della directory dei dati del server primario.
  4. 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:

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

  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

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.

Passaggi successivi