背景
1、産品的問題點
- PG 沒有block級增量備份恢複
2、問題點背後涉及的技術原理
- PG的備份包括2種, 1種是全量資料檔案+WAL歸檔日志增量備份, 支援按時間點還原.
-
- 還原時需要全量資料檔案+自從備份開始到恢複到的目标時間點的所有WAL
- 另一種是邏輯備份, 支援表級别的備份粒度, 不支援增量備份, 隻能恢複到備份集的狀态, 不支援按時間點還原.
- block級增量備份指的是: 隻備份自從上一次備份以來修改過的資料塊, 适合全量資料檔案備份的加速. PG社群版本暫時不支援該功能.
-
- block 級的增量備份可以減少全量資料檔案備份的次數.
3、這個問題将影響哪些行業以及業務場景
- 通用
4、會導緻什麼問題?
- 按時間點還原資料庫時需要全量資料檔案+自從備份開始到恢複到的目标時間點的所有WAL, 恢複速度取決于有多大的資料檔案, 以及有多少wal日志.
-
- 為了保障時間點還原的SLA, 我們必須提高全量資料檔案備份的頻率, 進而減少需要回放的wal個數, 進而提高PITR恢複速度.
- 問題1: 備份需要更大的存儲空間.
- 問題2: 頻率不可能無限提高, 對于特别大的資料庫執行個體, 例如1天都備份不完, 那麼備份頻率就不能到每天一次, 因為上一次備份還沒有完成, 新的備份又發起了.
- 問題3: 增加備份庫的負擔, 因為備份要讀區資料檔案, 拷貝資料檔案, 增加了網絡、IO開銷.
5、業務上應該如何避免這個坑
- 使用ZFS的快照功能代替拷貝資料檔案
-
- 《如何建立RDS PG 的秒級 flashback閃回執行個體, 實時容災執行個體 - zfs - snapshot - clone - standby - compress》
- 《PostgreSQL 最佳實踐 - 塊級增量備份(ZFS篇)驗證 - recovery test script for zfs snapshot clone + postgresql stream replication + archive》
- 《PostgreSQL 最佳實踐 - 塊級增量備份(ZFS篇)雙機HA與塊級備份部署》
- 《PostgreSQL 最佳實踐 - 塊級增量備份(ZFS篇)單個資料庫采用多個zfs卷(如表空間)時如何一緻性備份》
- 《PostgreSQL 最佳實踐 - 塊級增量備份(ZFS篇)備份集有效性自動校驗》
- 《PostgreSQL 最佳實踐 - 塊級增量備份(ZFS篇)方案與實戰》
- 使用 pg_rman第三方備份工具, 支援資料檔案的block級别增量備份和恢複.
- pg_probackup第三方備份工具, 支援資料檔案的block級别增量備份和恢複.
6、業務上避免這個坑犧牲了什麼, 會引入什麼新的問題
- 不是PG社群原生功能, 品質、持續性無法保障.
- 管理複雜度增加
7、資料庫未來産品疊代如何修複這個坑
- 希望PG社群版本原生支援