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 primario. Aggiorna continuamente i propri dati per riflettere le modifiche ai dati del server primario.

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.

Prima di iniziare

Prima di procedere, installa e configura AlloyDB Omni utilizzando il pacchetto RPM. Per ulteriori informazioni, vedi Installare AlloyDB Omni utilizzando RPM.

Configurare il server primario per la replica

  1. Aggiorna le impostazioni di rete o firewall dell'host del server primario in modo che consenta il traffico in entrata dall'host del server di replica tramite la porta Postgres del server primario.

  2. Crea un utente di replica:

    psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD';
    grant pg_read_all_settings to REPLICA_USER;"
  3. Aggiungi le seguenti righe nel file /DATA_DIR/pg_hba.conffile del server primario prima 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 di replica. Ad esempio, 203.0.113.0/24.
    • DATA_DIR: il percorso della directory dei dati del server primario.
  4. Riavvia il server primario:

    sudo systemctl restart alloydbomni18

Creare e configurare 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 primario:

    ping SOURCE_IP

    Sostituisci SOURCE_IP con l'indirizzo IP dell'istanza AlloyDB Omni primaria da cui eseguire la replica.

  2. Assicurati che la replica possa connettersi al server primario:

    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:

    sudo -u postgres pg_basebackup \
      --pgdata=DATA_DIR \
      --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 AlloyDB Omni primaria 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.
    • DATA_DIR: il percorso della directory dei dati per il server di replica.
  4. Avvia l'istanza di replica:

    sudo systemctl start alloydbomni18

Verificare lo stato della replica sul server primario

Per verificare che la replica sia configurata correttamente, esegui il seguente comando sull'host del server primario:

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

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

Scalare i carichi di lavoro di lettura utilizzando i pool di lettura

Per scalare i requisiti di reporting e di sola lettura, puoi eseguire il provisioning di più repliche di streaming asincrone per formare un pool di lettura. Puoi accedere al pool di lettura connettendoti direttamente agli indirizzi IP dei nodi di replica.

Prima di iniziare

Assicurati di aver creato REPLICA_USER con i privilegi REPLICATION sul server primario. Devi anche assicurarti che il file pg_hba.conf del server primario sia configurato per consentire le connessioni di replica dagli indirizzi IP dei nodi di replica.

Eseguire il provisioning di più repliche di sola lettura

Per creare più repliche, ripeti questi passaggi per ogni nodo di replica che vuoi includere nel pool.

Su ogni nodo di replica, esegui il comando pg_basebackup, assicurandoti di fornire un nome di slot di replica univoco per ogni nodo:

  sudo -u postgres pg_basebackup \
   --pgdata=DATA_DIR \
   --checkpoint=fast \
   --host="SOURCE_IP" \
   --port="SOURCE_PORT" \
   --username=REPLICA_USER \
   --create-slot \
   --write-recovery-conf \
   --slot="UNIQUE_SLOT_NAME_PER_NODE"
   ```
Once the backup is complete, start the database service on each replica:
  ```posix-terminal
  sudo systemctl start alloydbomni18