背景
1、産品的問題點
- PG 缺少便捷的壞塊修複能力
2、問題點背後涉及的技術原理
- PG 的資料通過block組織, block可以開啟checksum用于校驗其正确性. 如果BLOCK出現了問題checksum可能和實際計算得到的checksum對不上, 或者完全無法讀出該block.
- 遇到這樣的問題, 需要通過備份進行恢複.
3、這個問題将影響哪些行業以及業務場景
- 通用
4、會導緻什麼問題?
- 通過備份進行恢複代價非常大. 如果隻是少量block出現問題, 顯然代價很高.
5、業務上應該如何避免這個坑
- 目前隻能通過備份恢複, 包括邏輯備份, 實體備份.
6、業務上避免這個坑犧牲了什麼, 會引入什麼新的問題
- 一旦涉及到備份恢複, 就要考慮2個問題
-
- 能不能恢複到最新的狀态
- 需要多久完成恢複, 越大的執行個體, 可能需要花費越多時間.
-
-
- 雖然可以使用ZFS這種快照檔案系統, 建立實時從庫來解決恢複速度的問題. 但是實體壞塊是可能傳染的, 問題有可能傳染到從庫.
-
- 要有完整的備份, 導緻成本增加
- 備份和恢複都需要資源來存儲, 導緻成本增加
7、資料庫未來産品疊代如何修複這個坑
- 希望核心層面支援通過WAL日志(有full page write時)來修複壞塊, 效率大幅度提升, 而且沒有通過PITR全量恢複耗時、耗資源的問題.