逻辑复制mysql_物理复制 vs 逻辑复制,该如何选择?
原標題:物理復制 vs 邏輯復制,該如何選擇?
近些年受到國內外許多因素的影響,越來越多的業務開始使用PostgreSQL數據庫。復制是保證數據安全的一種常用手段,給正在使用的數據提供了一個熱備的副本,當一個副本宕機或丟失,能快速使用另一個進行運作,對業務影響較小。PostgreSQL數據庫提供了兩種復制方式:物理復制和邏輯復制。很多剛接觸數據庫的小伙伴,不知道該如何選擇。本文將對兩種復制方式進行一些介紹。
汪彥舒 | 文
? 中興數據智能(ZTE-DI)出品
物理復制
物理復制是指將主庫WAL日志的日志頁直接發到備機,備機完全應用的一種復制方式。
物理復制有非常多的好處:
物理層面完全一致,這是許多商業數據庫的慣用手段。例如Oracle的DG。
延遲低,事務執行過程中產生REDO record,實時的在備庫apply,事務結束時,備庫立馬能見到數據。不論事務多大,都一樣。
物理復制的一致性、可靠性達到了金融級的需求,不必擔心數據邏輯層面不一致。
物理復制邏輯流程如下圖所示:
但是物理復制要求主備塊級完全一致,所以有一些無法覆蓋的應用場景,例如備庫不僅要只讀,還要可寫。又比如備庫不需要完全和主庫一致,只需要復制部分數據,或者備庫要從多個數據源復制數據等。無法包含的場景有如下幾點:
數據庫實例的部分,例如單個數據庫或者某些表的復制需求。
數據到達subcriber后,針對不同數據,設置觸發器。
將多個數據庫實例的數據,同步到一個目標數據庫。例如多個數據庫同步到一個大的數據倉庫。
在不同的數據庫版本之間,復制數據。
將一個數據庫實例的不同數據,復制到不同的目標庫。
在多個數據庫實例之間,共享部分數據。
邏輯復制
PostgreSQL邏輯復制是事務級別的復制,使用發布者/訂閱者模型,使用訂閱復制槽技術,可并行的傳輸WAL日志,通過在訂閱端回放WAL日志中的邏輯條目,保持復制表的數據同步,注意這里不是“SQL”復制,而是復制SQL操作的結果。
邏輯復制流程如下圖所示:
邏輯復制應用場景和優點,與物理復制相互補。主要是可基于表級別復制,是一種粒度可細的復制,主要用在以下場景:
滿足業務上需求,實現某些指定表數據同步。
不同版本的PostgreSQL之間數據同步。
PostgreSQL大版本升級,數據直接同步備份到高版本。
復制providor可以有多個,復制到subcriber之后做數據的聚集和合并等操作。
可在如下場景中使用:
但是,邏輯復制的限制也是比較多的:
(1) 版本限制:lpglogical是邏輯復制的技術組件,功能使用存在數據庫版本限制:數據源發布和訂閱節點需要運行 PostgreSQL 9.4 +,復制源過濾和沖突檢測需要 PostgreSQL 9.5 +,pglogical 支持跨 PostgreSQL 主要版本之間的復制但在訂閱服務器上不同版本之間進行復制時,可能會出現問題。支持從舊版本復制到新版本因為 PostgreSQL 的向后兼容性保證的,但只有有限的向前兼容性比較安全。
(2) 其它限制:不支持DDL復制(ALTER TABLE/CREATE TABLE);不支持TEMPRORARY表和UNLOGGED表復制;不支持Sequences復制( serial/bigserial/identity);不支持TRUNCATE操作復制;不支持大對象復制(Bytea);不支持視圖、物化視圖、外部表復制;被復制的表上最好有主鍵約束;如果沒有,必須執行:ALTER TABLE reptest REPLICA IDENTITY FULL;(備注)訂閱端的復制表是可修改的,復制表一旦修改,發布者和訂閱者會數據不一致,進而打破復制等。
總結
物理復制和邏輯復制各有優缺點,在使用的時候需要貼合業務場景,不可一概而論。
在金融領域,所有數據都是很重要的,且對一致性要求非常高的場景,建議使用物理復制,低延時、低損耗,貼合業務需求。
在運營商計費業務中,業務數據也是具有上述特征的,建議同上。
在需要使用讀寫分離的業務場景(讀很多、寫較少)中,要求主備節點數據差距小,避免發生各節點讀不一致的現象,則建議使用物理復制。
在電信網管領域,只有部分數據重要程度較高,需要備份部分數據,那么,建議使用邏輯復制,節省帶寬以及subcriber節點的存儲。
PostgreSQL大版本升級等復制兩側數據庫版本不一致的場景,則只能選擇邏輯復制。
參考資料:
http://mysql.taobao.org/monthly/2016/08/02/
https://blog.csdn.net/weixin_39540651/article/details/106122610
https://blog.csdn.net/pg_hgdb/article/details/83650209 返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的逻辑复制mysql_物理复制 vs 逻辑复制,该如何选择?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最新 2022百威英博AI面试真题题库
- 下一篇: mysql数据库1067_MySQL数据