Crea una replica di sola lettura

Select a documentation version:

Per aumentare la velocità effettiva di lettura e la disponibilità, puoi creare un server replica di AlloyDB Omni per un server AlloyDB Omni esistente. Un server 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 principale di AlloyDB Omni per la replica, configurare il server replica e verificare lo stato della replica sul server principale.

Per i dettagli, vedi Installare AlloyDB Omni su Kubernetes.

Configurare 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 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 a il 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.
    • var>CONTAINER_NAME: il nome che hai assegnato a l container AlloyDB Omni durante l'installazione.
  3. Aggiungi le seguenti righe nel file /DATA_DIR/pg_hba.conf file del server principale prima di host all all all scram-sha-256 che esiste 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.
  4. Riavvia il server principale:

    Docker

    docker restart CONTAINER_NAME

    Podman

    podman restart CONTAINER_NAME

Creare e configurare il server replica

Per creare e configurare un server replica di 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/18/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/18/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 connessa al server di database principale.

Dopo aver configurato la replica, tutti gli inserimenti, gli aggiornamenti e le eliminazioni delle righe nel server di database principale diventano leggibili nella replica in pochi secondi.

Passaggi successivi