Menggunakan file log WAL database PostgreSQL

Ringkasan

Datastream menggunakan log transaksi PostgreSQL WAL (Write Ahead Log) untuk membaca aliran PostgreSQL. Log disimpan dalam file WAL di server {i>database<i}. Setiap {i>record<i} di log WAL mewakili satu perubahan pada data aktual di salah satu tabel dalam {i>database<i}.

Menetapkan parameter konfigurasi untuk file WAL PostgreSQL

Sebaiknya terapkan setelan konfigurasi berikut ke database PostgreSQL Anda:

  • max_slot_wal_keep_size: menetapkan parameter ini (hanya tersedia untuk PostgreSQL 13 dan yang lebih baru) untuk membatasi jumlah penyimpanan yang digunakan oleh slot replikasi. Ini sangat penting untuk transaksi yang berjalan lama, yang pada kasus ekstrem, dapat menyebabkan ukuran file WAL memenuhi seluruh penyimpanan dan menyebabkan error pada database.

  • statement_timeout: menetapkan parameter ini ke nilai yang dipilih untuk mengurangi latensi yang disebabkan oleh transaksi yang berjalan lama. Anda juga dapat menggunakan statement_timeout sebagai tindakan pencegahan alternatif untuk database yang tidak mendukung max_slot_wal_keep_size.

  • wal_sender_timeout: tetapkan parameter ini ke 0 (untuk menonaktifkan waktu tunggu) atau ke nilai yang lebih besar dari atau sama dengan 10 menit.

Jika Anda berencana untuk membuat lebih dari 10 streaming, atau jumlah slot replikasi logis yang digunakan oleh resource lain selain jumlah streaming yang direncanakan melebihi 10, pastikan untuk mengubah parameter berikut:

  • max_replication_slots: tingkatkan nilai parameter ini, bergantung pada jumlah slot replikasi yang ditetapkan untuk database (Anda memerlukan 1 slot replikasi per streaming). Anda hanya dapat menetapkan max_replication_slots pada saat server dimulai.

  • max_wal_senders: meningkatkan nilai parameter ini, sehingga lebih besar daripada nilai parameter max_replication_slots. Anda hanya dapat menyetel max_wal_senders saat memulai server.