暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

物理复制 vs 逻辑复制,该如何选择?

中兴数据智能 2021-04-16
7162

大数据 / 人工智能 / 区块链 / 数据库 / 热点
近些年受到国内外许多因素的影响,越来越多的业务开始使用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

* 本文为中兴数据智能原创文章,转载请留言或评论获取授权。



文章转载自中兴数据智能,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论