XlogMiner 強化版本發布並更名為 WalMiner

發布於 2019-02-22,作者:Highgo Software
相關開源專案

XlogMiner 是一個從 PostgreSQL 的 WAL 中解析已執行的 SQL 語句,並產生相應的撤銷 SQL 語句的工具。開源專案地址為 https://github.com/HighgoSoftware/XLogMiner。這個版本有很大的使用限制,您需要將 wal level 設置為 logical,並且需要將表設置為 IDENTITY FULL 模式。這可能會加劇 wal 的膨脹並降低資料庫效能。

為了適應 PG 日誌名稱的變更,XlogMiner 現在更名為 WalMiner。新的開源地址暫時位於 https://gitee.com/movead/XLogMiner

版本強化

舊版本的 xlogminer 工具的分析來源是當前 wal 記錄中的「變更資料」。它不會從 FPW 中的頁面獲取資料來解析 wal 記錄。

新版本的 walminer 不僅可以解析當前 wal 記錄的 FPW,還可以記錄和重做解析過程中出現的所有 FPW。因此,walminer 可以解析低階 wal,您無需將表設置為 IDENTITY FULL 模式。

此外

1. WalMiner 支援解析最低層級以上的任何 wal 日誌層級。

2. 無需將表設定為 IDENTITY FULL 模式。

3. 提高對系統表修改的 wal 記錄的解析度。

4. 修正了發生 relfilenode 變更後,在其他資料庫中解析失敗的錯誤。

WalMiner 帶來的新限制

Walminer 可以完全解析給定 wal 中第一個檢查點之後的所有 wal 記錄。第一個檢查點之前的刪除和更新記錄可能無法解析,如下所示

UPDATE "public"."t1" SET VALUES(NULL) (NOTICE:wal is not enought.);

如果您需要解析此記錄,您只需添加一些更早的 wal 片段即可。

具體用法請參閱開源程式碼中的 README.EN.MD。

限制

  1. 此版本僅解析 DML 語句,不處理 DDL 語句。 未來變更:DDL 語句的解析已放入待辦事項清單,可能會逐步支援各種 DDL 語句。
  2. 當執行以下與 DDL 相關的操作時,DML 語句將不會被解析出來:刪除/截斷表、表空間修改和欄位類型修改等。回應:建議保存資料字典,以確保在執行表結構變更之前,可以解析歷史 wal 日誌。 未來變更:現在我已經增加了在 walminer 中保存資料字典的功能。
  3. 解析結果取決於最新的資料庫字典。例如,在 user1 建立表 t1 後,表所有者被修改為 user2,則所有與表 t1 相關的解析結果都將標記為 user2。 回應:建議保存資料字典,以確保在執行表結構變更之前,可以解析歷史 wal 日誌。 未來變更:現在我已經增加了在 walminer 中保存資料字典的功能。
  4. “ctid”屬性是變更“當時”的值。 如果由於 vacuum 或其他操作導致 “ctid” 發生變更,則此值將不準確。 當資料列重複時,我們需要使用此值來確定相應的撤銷元組,這並不意味著您可以直接執行這樣的撤銷語句。
  5. 如果執行了 DDL 語句 "drop",則在此 DDL 執行之前,所有相關欄位值將被解碼為 "encode('AD976BC56F',hex)"。
  6. 只能解析與資料字典時間線一致的 wal 檔案
  7. WalMiner 是一個獨立產品,尚未經過完整的測試。

聯絡我

如果您發現錯誤或有好的建議,您可以透過電子郵件 (lchch1990@sina.cn) 與我聯絡。