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 資料庫。