Zero downtime Postgres upgrades | Knock

Knock公司近期透過邏輯複製和一系列支援腳本,在零停機時間內將其Postgres資料庫從11.9版本升級至15.3。此過程涉及逐一添加資料表至新舊資料庫間的出版物和訂閱,並根據資料表大小和特性採取不同策略。升級過程中密切監控系統性能以確保服務穩定,並在確認新舊資料庫資料一致後,平滑轉移至新資料庫

Knock於最近從Postgres 11.9升級至15.3版本時,透過邏輯複製(logical replication)、一套支援腳本,以及在Elixir和Erlang的BEAM虛擬機器上的工具,實現了零停機時間升級。Knock依賴Postgres來支持其通知工作流引擎,從儲存工作流配置和訊息模板到處理數百萬筆日誌,Postgres是其系統核心的一部分。

升級關聯式資料庫如Postgres通常需要至少重啟資料庫。對於重大版本升級,資料庫經常需要完全關閉數分鐘以升級磁碟上的資料儲存和索引方式【8†來源】。為了避免任何停機時間,Knock採用了基於複製的升級方法。此方法涉及設置新資料庫的PUBLICATION和舊資料庫的SUBSCRIPTION,並逐一添加表格到發行端(publication),直到全部複製完成後,再測試以確保沒有風險,最後將應用程式指向新資料庫。

針對不同大小和特性的表格,Knock採用了不同的策略。例如,對於小型表格,可以直接添加到發行端並更新訂閱;對於大型、僅附加(append-only)的表格,則先複製未來的變更,然後從備份或快照中回填舊資料;對於大型且經常更新的表格,則需要更多的關注和照顧。

在整個升級過程中,Knock需要密切監控系統性能,以確保不會影響到服務的可靠性。最終,在確保新舊資料庫的資料一致後,Knock通過一系列精心設計的腳本實現了向新資料庫的平滑過渡。

內容出處: Zero downtime Postgres upgrades | Knock

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *