Datastream 會使用 PostgreSQL WAL (預先寫入記錄檔) 交易記錄檔來讀取 PostgreSQL 串流。記錄會儲存在資料庫伺服器上的 WAL 檔案中。WAL 記錄中的每個記錄都代表資料庫中某個資料表的實際資料發生單一變更。
設定 PostgreSQL WAL 檔案的設定參數
建議您將下列設定套用至 PostgreSQL 資料庫:
max_slot_wal_keep_size
:設定這個參數 (僅適用於 PostgreSQL 13 以上版本),以限制複製時段使用的儲存空間量。對於長時間執行的交易而言,這點尤其重要,因為在極端情況下,WAL 檔案大小可能會占用整個儲存空間,並導致資料庫當機。statement_timeout
:將這個參數設為所選值,以減少因長時間執行交易而造成的延遲。對於不支援max_slot_wal_keep_size
的資料庫,您也可以使用statement_timeout
做為替代預防措施。wal_sender_timeout
:將這個參數設為0
(停用逾時) 或設為大於或等於 10 分鐘的值。
如果您打算建立的串流超過 10 個,或是其他資源使用的邏輯複製運算單元數量加上所規劃串流數量超過 10 個,請務必修改下列參數:
max_replication_slots
:根據為資料庫設定的複製時段數量 (每個串流需要 1 個複製時段),提高這個參數的值。您只能在伺服器啟動時設定max_replication_slots
。max_wal_senders
:增加這個參數的值,使其大於max_replication_slots
參數的值。您只能在啟動伺服器時設定max_wal_senders
。
最佳化 WAL 記錄檔
為避免從 PostgreSQL 來源複製資料時,發生大量延遲和 WAL 記錄檔檔案大小快速增加的情況,建議您採取下列預防措施:
- 避免執行大型長時間運作作業,因為這類作業可能會大幅增加 WAL 檔案的大小。
- 在批次作業期間使用
UNLOGGED
或TEMPORARY
表格。 - 請檢查 WAL 設定,並考慮減少檢查點頻率。詳情請參閱「WAL 設定」
- 檢查大型
DELETE
作業,並考慮以TRUNCATE
作業取代。這麼做可以大幅減少 WAL 檔案資料,但請小心使用,因為 Datastream 不會複製TRUNCATE
作業。
後續步驟
- 進一步瞭解 PostgreSQL 做為來源。
- 進一步瞭解如何設定來源 PostgreSQL 資料庫。