天天看點

【DB吐槽大會】第37期 - PG 沒有block級增量備份恢複

背景

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的快照功能代替拷貝資料檔案
  • 使用 pg_rman第三方備份工具, 支援資料檔案的block級别增量備份和恢複.
  • pg_probackup第三方備份工具, 支援資料檔案的block級别增量備份和恢複.

6、業務上避免這個坑犧牲了什麼, 會引入什麼新的問題

  • 不是PG社群原生功能, 品質、持續性無法保障.
  • 管理複雜度增加

7、資料庫未來産品疊代如何修複這個坑

  • 希望PG社群版本原生支援