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

     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.
  4. Avvia l'istanza replica:

    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

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