Utilizzo della replica SQL logica di Postgree con Aurora - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo della replica SQL logica di Postgree con Aurora

Utilizzando la funzionalità di replica logica SQL di Postgre con il cluster Aurora Postgre SQL DB, è possibile replicare e sincronizzare singole tabelle anziché l'intera istanza del database. La replica logica utilizza un modello di pubblicazione e sottoscrizione per replicare le modifiche da un'origine in uno o più destinatari. Funziona utilizzando i record delle modifiche dal log write-ahead di Postgre (). SQL WAL L'origine, o editore, invia WAL i dati per le tabelle specificate a uno o più destinatari (sottoscrittore), replicando così le modifiche e mantenendo la tabella del sottoscrittore sincronizzata con la tabella dell'editore. L'insieme di modifiche apportate dall'editore vengono identificate mediante una pubblicazione. Gli abbonati ottengono le modifiche creando un abbonamento che definisce la connessione al database dell'autore e alle sue pubblicazioni. Uno slot di replica è il meccanismo utilizzato in questo schema per tenere traccia dell'avanzamento di una sottoscrizione.

Per i cluster Aurora Postgre SQL DB, i record WAL vengono salvati nell'archivio Aurora. Il cluster Aurora Postgre SQL DB che funge da editore in uno scenario di replica logica legge i WAL dati dallo storage Aurora, li decodifica e li invia al sottoscrittore in modo che le modifiche possano essere applicate alla tabella su quell'istanza. L'autore utilizza un decodificatore logico per decodificare i dati per l'uso da parte degli abbonati. Per impostazione predefinita, i cluster Aurora Postgre SQL DB utilizzano il plug-in Postgre nativo per l'invio SQL pgoutput di dati. Sono disponibili altri decodificatori logici. Ad esempio, Aurora Postgre supporta SQL anche il wal2json plugin che converte i dati in. WAL JSON

A partire dalle SQL versioni 14.5, 13.8, 12.12 e 11.17 di Aurora Postgre, Aurora Postgre amplia il processo di replica logica di SQL Postgre con una cache di scrittura per migliorare le prestazioni. SQL I log WAL delle transazioni vengono memorizzati nella cache locale, in un buffer, per ridurre la quantità di I/O del disco, ovvero la lettura dallo storage Aurora durante la decodifica logica. La cache write-through viene utilizzata per impostazione predefinita ogni volta che si utilizza la replica logica per il cluster Aurora Postgre DB. SQL Aurora offre diverse funzioni che puoi utilizzare per gestire la cache. Per ulteriori informazioni, consulta Gestione della cache write-through per la replica logica di Aurora Postgree SQL.

La replica logica è supportata da tutte le versioni di SQL Aurora Postgre attualmente disponibili. Per ulteriori informazioni, gli SQLaggiornamenti di Amazon Aurora Postgre nelle Note di rilascio per Aurora Postgre. SQL

La replica logica è supportata da Babelfish per Aurora SQL Postgre dalle seguenti versioni:

  • 15.7 e versioni successive

  • 16.3 e versioni successive

Nota

Oltre alla funzionalità di replica SQL logica nativa di Postgre introdotta in Postgre SQL 10, SQL Aurora Postgre supporta anche l'estensione. pglogical Per ulteriori informazioni, consulta Utilizzo di pglogical per sincronizzare i dati tra le istanze.

Per ulteriori informazioni sulla replica SQL logica di Postgre, consulta Replica logica e Concetti di decodifica logica nella documentazione di Postgre. SQL

Nei seguenti argomenti, è possibile trovare informazioni su come configurare la replica logica tra i cluster Aurora SQL Postgre DB.

Configurazione della replica logica per il cluster Aurora SQL Postgre DB

La configurazione della replica logica richiede privilegi rds_superuser. Il cluster Aurora Postgre SQL DB deve essere configurato per utilizzare un gruppo di parametri del cluster DB personalizzato in modo da poter impostare i parametri necessari come descritto nella procedura seguente. Per ulteriori informazioni, consulta Gruppi di parametri del cluster DB per i cluster DB di Amazon Aurora.

Per configurare la replica SQL logica Postgre per un cluster Aurora Postgre DB SQL
  1. Accedi a AWS Management Console e apri la RDS console Amazon all'indirizzo https://console.aws.amazon.com/rds/.

  2. Nel pannello di navigazione, scegli il tuo cluster Aurora SQL Postgre DB.

  3. Apri la scheda Configurazione. Nei dettagli dell'istanza, cercare il collegamento Gruppo di parametri con l'opzione Tipo impostata su Gruppo di parametri del cluster DB.

  4. Scegli il link per aprire i parametri personalizzati associati al tuo cluster Aurora SQL Postgre DB.

  5. Nel campo di ricerca Parametri, digita rds per trovare il parametro rds.logical_replication. Il valore predefinito per questo parametro è 0, per indicare che è disattivato per impostazione predefinita.

  6. Scegli Modifica parametri per accedere ai valori delle proprietà, quindi seleziona 1 dal selettore per attivare la funzione. A secondo dell'utilizzo previsto, potrebbe anche essere necessario modificare le impostazioni per i seguenti parametri. Tuttavia, in molti casi, i valori predefiniti sono sufficienti.

    • max_replication_slots: imposta questo parametro su un valore almeno uguale al numero totale pianificato di pubblicazioni e sottoscrizioni della replica logica. Se lo utilizzi AWS DMS, questo parametro deve corrispondere almeno alle attività pianificate di acquisizione dei dati di modifica dal cluster, oltre alle pubblicazioni e agli abbonamenti di replica logica.

    • max_wal_senderse max_logical_replication_workers — Imposta questi parametri su un valore almeno uguale al numero di slot di replica logica che intendi rendere attivi o al numero di AWS DMS attività attive per l'acquisizione dei dati di modifica. Lasciando inattivo uno slot di replica logica si impedisce al vacuum di rimuovere le tuple obsolete dalle tabelle, pertanto ti consigliamo di monitorare gli slot di replica e rimuovere gli slot inattivi in base alle esigenze.

    • max_worker_processes: imposta questo parametro su un valore che sia almeno uguale al totale dei valori max_logical_replication_workers, autovacuum_max_workers e max_parallel_workers. Su classi di istanza database di piccole dimensioni, i processi dell'operatore in background potrebbero influire sui carichi di lavoro delle applicazioni, pertanto monitorare le prestazioni del database se si imposta max_worker_processes su un valore più elevato di quello predefinito. (Il valore predefinito è il risultato diGREATEST(${DBInstanceVCPU*2},8}, il che significa che, per impostazione predefinita, è 8 o due volte l'CPUequivalente della classe di istanza DB, a seconda di quale sia il maggiore).

    Nota

    È possibile modificare i valori dei parametri in un gruppo di parametri database creato dal cliente, ma non i valori dei parametri in un gruppo di parametri database predefinito.

  7. Scegli Save changes (Salva modifiche).

  8. Riavvia l'istanza writer del cluster Aurora SQL Postgre DB in modo che le modifiche abbiano effetto. Nella RDS console Amazon, scegli l'istanza DB principale del cluster e scegli Reboot dal menu Azioni.

  9. Quando l'istanza è disponibile, puoi verificare che la replica logica sia attivata, come riportato di seguito.

    1. Utilizzalo psql per connetterti all'istanza writer del tuo cluster Aurora SQL Postgre DB.

      psql --host=your-db-cluster-instance-1.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=labdb
    2. Verifica che la replica logica sia stata abilitata utilizzando il seguente comando.

      labdb=> SHOW rds.logical_replication; rds.logical_replication ------------------------- on (1 row)
    3. Verifica che wal_level sia impostato su logical.

      labdb=> SHOW wal_level; wal_level ----------- logical (1 row)

Per un esempio di utilizzo della replica logica per mantenere una tabella di database sincronizzata con le modifiche da un cluster Aurora SQL Postgre DB di origine, vedere. Esempio: utilizzo della replica logica con i cluster Aurora SQL Postgre DB

Disattivazione della replica logica

Dopo aver completato le attività di replica, è necessario interrompere il processo di replica, eliminare gli slot di replica e disattivare la replica logica. Prima di eliminare gli slot, assicurati che non siano più necessari. Gli slot di replica attivi non possono essere eliminati.

Disattivazione della replica logica
  1. Abbandonare tutti gli slot di replica.

    Per eliminare tutti gli slot di replica, connettiti all'editore ed esegui il comando seguente. SQL

    SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots WHERE slot_name IN (SELECT slot_name FROM pg_replication_slots);

    Gli slot di replica non possono essere attivi quando si esegue questo comando.

  2. Modifica il gruppo di parametri cluster database personalizzato associato all'editore come descritto in Configurazione della replica logica per il cluster Aurora SQL Postgre DB, ma imposta il parametro rds.logical_replication su 0

    Per ulteriori informazioni sui gruppi di parametri, consulta Modifica dei parametri in un gruppo di parametri del cluster DB in Amazon Aurora.

  3. Riavviare il cluster SQL DB dell'editore Aurora Postgre per rendere effettiva la modifica al rds.logical_replication parametro.

Gestione della cache write-through per la replica logica di Aurora Postgree SQL

Per impostazione predefinita, SQL le versioni 14.5, 13.8, 12.12 e 11.17 di Aurora Postgre e successive utilizzano una cache di scrittura per migliorare le prestazioni per la replica logica. Senza la cache di scrittura, Aurora Postgre SQL utilizza il livello di archiviazione Aurora per implementare il processo di replica logica di Postgre nativo. SQL A tale scopo, scrive WAL i dati nello storage e quindi li rilegge per decodificarli e inviarli (replicarli) ai destinatari (abbonati). Ciò può causare colli di bottiglia durante la replica logica per i cluster Aurora Postgre DB. SQL

La cache write-through riduce la necessità di utilizzare il livello di archiviazione Aurora. Invece di scrivere e leggere sempre dal livello di archiviazione Aurora, Aurora Postgre SQL utilizza un buffer per memorizzare nella cache il WAL flusso logico in modo che possa essere utilizzato durante il processo di replica, anziché estrarlo sempre dal disco. Questo buffer è la cache SQL nativa di Postgre utilizzata dalla replica logica, identificata nei parametri del cluster Aurora Postgre DB come. SQL rds.logical_wal_cache Per impostazione predefinita, questa cache utilizza 1/32 dell'impostazione della cache buffer del cluster Aurora SQL Postgre DB shared_buffers () ma non meno di 64 kB né più della dimensione di un segmento, in genere 16 MB. WAL

Quando utilizzi la replica logica con il tuo cluster Aurora SQL Postgre DB (per le versioni che supportano la cache write-through), puoi monitorare il rapporto di accesso alla cache per vedere se funziona bene per il tuo caso d'uso. A tale scopo, connettiti all'istanza di scrittura del cluster Aurora Postgre SQL DB utilizzando psql e quindi utilizza la funzione Auroraaurora_stat_logical_wal_cache, come illustrato nell'esempio seguente.

SELECT * FROM aurora_stat_logical_wal_cache();

La funzione restituisce un output come il seguente:

name | active_pid | cache_hit | cache_miss | blks_read | hit_rate | last_reset_timestamp -----------+------------+-----------+------------+-----------+----------+-------------- test_slot1 | 79183 | 24 | 0 | 24 | 100.00% | 2022-08-05 17:39... test_slot2 | | 1 | 0 | 1 | 100.00% | 2022-08-05 17:34... (2 rows)

I valori last_reset_timestamp sono stati abbreviati per garantire la leggibilità. Per ulteriori informazioni su questa funzione, consulta aurora_stat_logical_wal_cache.

Aurora Postgre SQL offre le seguenti due funzioni per il monitoraggio della cache di scrittura.

Se ritieni che la dimensione della WAL cache regolata automaticamente non sia sufficiente per i tuoi carichi di lavoro, puoi modificare il valore della cache rds.logical_wal_cache manualmente, modificando il parametro nel gruppo di parametri del cluster DB personalizzato. Tieni presente che qualsiasi valore positivo inferiore a 32 KB viene considerato come 32 KB. Per ulteriori informazioni suwal_buffers, consulta Write Ahead Log nella documentazione di SQL Postgre.

Gestione degli slot logici per Aurora Postgre SQL

L'attività di streaming viene acquisita nella vista pg_replication_origin_status. Per visualizzare il contenuto di questa vista, è possibile utilizzare la funzione pg_show_replication_origin_status(), come illustrato di seguito:

SELECT * FROM pg_show_replication_origin_status();

È possibile ottenere un elenco degli slot logici utilizzando la seguente query. SQL

SELECT * FROM pg_replication_slots;

Per eliminare uno slot logico, utilizza pg_drop_replication_slot con il nome dello slot, come illustrato nel seguente comando.

SELECT pg_drop_replication_slot('test_slot');

Esempio: utilizzo della replica logica con i cluster Aurora SQL Postgre DB

La procedura seguente mostra come avviare la replica logica tra due cluster Aurora SQL Postgre DB. Sia l'editore che il sottoscrittore devono essere configurati per la replica logica, come descritto in Configurazione della replica logica per il cluster Aurora SQL Postgre DB.

Il cluster Aurora Postgre SQL DB che è l'editore designato deve inoltre consentire l'accesso allo slot di replica. A tale scopo, modifica il gruppo di sicurezza associato al cloud pubblico virtuale del cluster Aurora Postgre SQL DB (VPC) basato sul servizio Amazon. VPC Consenti l'accesso in entrata aggiungendo il gruppo di sicurezza associato all'abbonato al gruppo di sicurezza dell'VPCeditore. Per ulteriori informazioni, consulta Controllare il traffico verso le risorse utilizzando i gruppi di sicurezza nella Amazon VPC User Guide.

Una volta completati questi passaggi preliminari, puoi utilizzare SQL i comandi Postgre CREATE PUBLICATION sull'editore e CREATE SUBSCRIPTION sull'abbonato, come descritto nella procedura seguente.

Per avviare il processo di replica logica tra due cluster Aurora SQL Postgre DB

Questi passaggi presuppongono che i cluster Aurora Postgre SQL DB abbiano un'istanza writer con un database in cui creare le tabelle di esempio.

  1. Sul cluster DB dell'editore Aurora SQL Postgre

    1. Crea una tabella utilizzando la seguente istruzione. SQL

      CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY);
    2. Inserite i dati nel database dell'editore utilizzando la seguente SQL istruzione.

      INSERT INTO LogicalReplicationTest VALUES (generate_series(1,10000));
    3. Verificate che i dati esistano nella tabella utilizzando la seguente SQL istruzione.

      SELECT count(*) FROM LogicalReplicationTest;
    4. Crea una pubblicazione per questa tabella utilizzando l'istruzione CREATE PUBLICATION, come descritto di seguito.

      CREATE PUBLICATION testpub FOR TABLE LogicalReplicationTest;
  2. Sul cluster Aurora SQL Postgre DB per abbonati

    1. Nel sottoscrittore, crea la stessa tabella LogicalReplicationTest che hai creato nell'editore, come descritto di seguito.

      CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY);
    2. Verifica che questa tabella sia vuota.

      SELECT count(*) FROM LogicalReplicationTest;
    3. Crea una sottoscrizione per ottenere le modifiche dall'editore. È necessario utilizzare i seguenti dettagli sul cluster DB dell'editore Aurora SQL Postgre.

      • host — L'istanza DB writer del cluster di Publisher Aurora Postgre SQL DB.

      • porta: la porta di ascolto dell’istanza database di scrittura. L'impostazione predefinita per SQL Postgre è 5432.

      • dbname: il nome del database.

      CREATE SUBSCRIPTION testsub CONNECTION 'host=publisher-cluster-writer-endpoint port=5432 dbname=db-name user=user password=password' PUBLICATION testpub;
      Nota

      Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

      Successivamente alla creazione della sottoscrizione, dal lato del publisher viene creato uno slot di replica logica.

    4. Per verificare, per questo esempio, che i dati iniziali vengano replicati sul sottoscrittore, utilizzate la seguente SQL istruzione sul database degli abbonati.

      SELECT count(*) FROM LogicalReplicationTest;

Ogni successiva modifica al publisher viene replicata nel sottoscrittore.

La replica logica influisce sulle prestazioni. Ti consigliamo di disattivare la replica logica al termine delle attività di replica.

Esempio: replica logica con SQL Aurora Postgre e AWS Database Migration Service

È possibile utilizzare AWS Database Migration Service (AWS DMS) per replicare un database o una parte di un database. Utilizzalo AWS DMS per migrare i dati da un database Aurora SQL Postgre a un altro database open source o commerciale. Per ulteriori informazioni in merito AWS DMS, consulta la Guida per l'utente.AWS Database Migration Service

L'esempio seguente mostra come impostare la replica logica da un database Aurora SQL Postgre come editore e quindi utilizzarla per la migrazione. AWS DMS L’esempio utilizza lo stesso publisher e lo stesso sottoscrittore creati in Esempio: utilizzo della replica logica con i cluster Aurora SQL Postgre DB.

Per configurare la replica logica con AWS DMS, hai bisogno dei dettagli sul tuo editore e sull'abbonato da Amazon. RDS In particolare, occorrono i dettagli sull’istanza database di scrittura del publisher e sull’istanza database del sottoscrittore.

Ottenere le seguenti informazioni per l’istanza database di scrittura del publisher:

  • L'identificatore del cloud privato virtuale () VPC

  • Il gruppo di sottoreti

  • La zona di disponibilità (Availability Zone, AZ)

  • Il gruppo VPC di sicurezza

  • L’ID dell’istanza database

Ottenere le seguenti informazioni per l’istanza database del sottoscrittore:

  • L’ID dell’istanza database

  • Il motore di origine

Da utilizzare AWS DMS per la replica logica con Aurora Postgre SQL
  1. Preparare il database dell'editore con cui lavorare. AWS DMS

    A tale scopo, i database Postgre SQL 10.x e versioni successive richiedono l'applicazione delle funzioni AWS DMS wrapper al database dell'editore. Per i dettagli su questa procedura e su quelle successive, consulta le istruzioni contenute in Uso di Postgre SQL versione 10.x e successive come fonte nella Guida per l'utente. AWS DMSAWS Database Migration Service

  2. Accedi AWS Management Console e apri la console all'indirizzo. AWS DMS https://console.aws.amazon.com/dms/v2 In alto a destra, scegli la stessa AWS regione in cui si trovano l'editore e l'abbonato.

  3. Crea un'istanza di AWS DMS replica.

    Selezionare valori che siano identici a quelli dell’istanza database di scrittura del publisher. Tali valori includono le seguenti impostazioni:

    • Per VPC, scegli lo stesso che per VPC l'istanza Writer DB.

    • Per Replication Subnet Group (Gruppo di sottoreti di replica), selezionare lo stesso gruppo di sottoreti con gli stessi valori dell’istanza database di scrittura. Creane uno nuovo se necessario.

    • Per Availability zone (Zona di disponibilità), selezionare la stessa zona dell’istanza database di scrittura.

    • Per VPCSecurity Group, scegli lo stesso gruppo utilizzato per l'istanza Writer DB.

  4. Crea un AWS DMS endpoint per la sorgente.

    Specificare il publisher come endpoint di origine utilizzando le seguenti impostazioni:

    • Per Endpoint type (Tipo di endpoint), selezionare Source endpoint (Endpoint di origine).

    • Scegli Seleziona istanza RDS DB.

    • Ad RDSesempio, scegli l'identificatore DB dell'istanza DB Writer del publisher.

    • In Source engine (Motore di origine), scegliere postgres (postgres).

  5. Crea un AWS DMS endpoint per il target.

    Specificare il publisher come endpoint di destinazione utilizzando le seguenti impostazioni:

    • Per Endpoint type (Tipo di endpoint), scegliere Target endpoint (Endpoint di destinazione).

    • Scegli Seleziona istanza RDS DB.

    • Ad RDSesempio, scegli l'identificatore DB dell'istanza DB del sottoscrittore.

    • Selezionare un valore per Source engine (Motore di origine). Ad esempio, se il sottoscrittore è un database Postgres, RDS scegli postgres. SQL Se il sottoscrittore è un database Aurora SQL Postgre, scegli aurora-postgresql.

  6. AWS DMS Crea un'attività di migrazione del database.

    Un’attività di migrazione del database serve a specificare le tabelle del database di cui effettuare la migrazione, a mappare i dati utilizzando lo schema di destinazione e a creare nuove tabelle nel database di destinazione. Utilizzare almeno le seguenti impostazioni per Task configuration (Configurazione attività):

    • Per Replication instance (Istanza di replica), scegliere l'istanza di replica creata in precedenza.

    • Per Source database endpoint (Endpoint del database di origine), selezionare l’origine del publisher creata in precedenza.

    • Per Target database endpoint (Endpoint del database di destinazione), selezionare la destinazione del sottoscrittore creata in precedenza.

    I rimanenti dettagli dell'attività dipendono dal progetto di migrazione. Per ulteriori informazioni sulla specificazione di tutti i dettagli delle DMS attività, consulta Lavorare con AWS DMS le attività nella Guida per l'AWS Database Migration Service utente.

Dopo aver AWS DMS creato l'attività, inizia la migrazione dei dati dall'editore al sottoscrittore.