返回首頁

GitHub Repo

Paperclip 社群回報備份降級缺陷,還原後可能遺失資料庫約束

10 月 27 日的 Paperclip 社群回報指出,pg_dump 版本不符時,備份可能無提示地改用 JavaScript 引擎,還原後遺失 CHECK 約束並改變部分唯一性規則。截至查核時問題仍開放,尚無正式修補。

Kuebi Armin Kübelbeck · CC BY-SA 3.0 · Image source
zh-Hant

AI 代理管理平台 Paperclip 出現自架部署的備份完整性回報。使用者於 10 月 27 日指出,自動備份雖顯示完成,還原後卻缺少資料庫約束,直到後續遷移嘗試刪除既有約束時才暴露問題。回報者使用經小幅修改的舊版 canary,並表示已閱讀 v2026.1023.0 原始碼,確認相關路徑仍存在;這項版本判斷尚待維護者確認。問題回報

回報中的觸發組合是內嵌 PostgreSQL 18.1 搭配主機上的 pg_dump 16。原生匯出因版本不符失敗後,Paperclip 的自動模式轉用 JavaScript 備份引擎,卻未記錄降級原因。PostgreSQL 官方文件明定,pg_dump 不能匯出主版本比自己新的伺服器,因此部署時必須同時檢查資料庫與匯出工具版本。PostgreSQL 文件

回報者比對發現,來源資料庫的 66 個 CHECK 約束未進入備份,部分 UNIQUE NULLS NOT DISTINCT 也變成一般 UNIQUE,時間戳則失去微秒精度。這代表還原成功仍可能改變資料驗證規則。其跨資料表快照不一致疑慮來自程式碼分析,尚未實測,不宜與已觀察到的差異混為一談。回報與驗證方式

技術上,這提醒代理平台的維運者:備份檔存在、SQL 能載入,都不足以證明控制平面可完整復原。官方說明指出,pg_dump 可在資料庫持續使用時產生一致匯出;替代引擎是否維持相同語意,需要另行驗證。匯出一致性說明

工程團隊可優先確認實際使用的備份引擎,並在隔離環境比較還原前後的約束與時間精度。後續應觀察維護者是否確認最新版影響範圍,以及修補能否同時補上降級警示與還原驗證;目前仍不能視為正式版本已修復。

來源

  1. Paperclip issue #17854:備份引擎降級與還原差異回報
  2. PostgreSQL 18:pg_dump 官方文件