Utilizzo dei file di log WAL del database PostgreSQL

Datastream legge il write-ahead log (WAL) di PostgreSQL per acquisire e replicare le modifiche ai dati a livello di riga dalle tabelle di origine. Il server di database archivia ogni modifica della transazione nei file WAL. Puoi configurare i parametri di conservazione, timeout e slot di replica di WAL e ottimizzare la crescita dei file di log per evitare una latenza elevata dello stream e l'esaurimento dello spazio di archiviazione.

Imposta i parametri di configurazione per i file WAL di PostgreSQL

Ti consigliamo di applicare le seguenti impostazioni di configurazione al tuo database PostgreSQL:

  • max_slot_wal_keep_size: imposta questo parametro (disponibile solo per PostgreSQL 13 e versioni successive) per limitare la quantità di spazio di archiviazione utilizzato dallo slot di replica. Questo è particolarmente importante per le transazioni a lunga esecuzione, che, in casi estremi, possono far sì che le dimensioni del file WAL occupino l'intero spazio di archiviazione e causino l'arresto anomalo del database.

  • statement_timeout: imposta questo parametro su un valore selezionato per ridurre la latenza causata da transazioni a lunga esecuzione. Puoi anche utilizzare statement_timeout come misura precauzionale alternativa per i database che non supportano max_slot_wal_keep_size.

  • wal_sender_timeout: imposta questo parametro su 0 (per disattivare il timeout) o su un valore maggiore o uguale a 10 minuti.

Se prevedi di creare più di 10 stream o se il numero di slot di replica logica utilizzati da altre risorse oltre al numero di stream pianificati supera 10, assicurati di modificare i seguenti parametri:

  • max_replication_slots: aumenta il valore di questo parametro, a seconda del numero di slot di replica impostati per il tuo database (è necessario uno slot di replica per stream). Puoi impostare max_replication_slots solo all'avvio del server.

  • max_wal_senders: aumenta il valore di questo parametro in modo che sia maggiore del valore del parametro max_replication_slots. Puoi impostare max_wal_senders solo quando avvii il server.

Ottimizza i file di log WAL

Per evitare un'elevata latenza degli stream e una rapida crescita delle dimensioni dei file di log WAL durante la replica dei dati da un'origine PostgreSQL, valuta la possibilità di applicare le seguenti precauzioni:

  • Evita operazioni a lunga esecuzione di grandi dimensioni perché possono aumentare in modo significativo le dimensioni del file WAL.
  • Utilizza le tabelle UNLOGGED o TEMPORARY durante le operazioni batch.
  • Controlla la configurazione del WAL e valuta la possibilità di ridurre la frequenza dei checkpoint. Per saperne di più, consulta Configurazione WAL.
  • Controlla se sono presenti operazioni DELETE di grandi dimensioni e valuta la possibilità di sostituirle con operazioni TRUNCATE. In questo modo, puoi ridurre in modo significativo i dati dei file WAL, ma devi prestare attenzione, perché Datastream non replica le operazioni TRUNCATE.

Passaggi successivi