数据库流复制和逻辑复制

本文详细介绍了PostgreSQL10中的逻辑复制和流复制技术,包括它们的原理、区别(如数据同步粒度、事务处理方式、库权限等),以及各自的适用场景。
摘要由CSDN通过智能技术生成

 PostgreSQL10另一重量级新特性为逻辑复制(Logical Replication),流复制是基于实例级别的复制,相当于主库的一个热备,也就是说备库的数据库对象和主库一模一样,而逻辑复制是基于表级别的选择性复制,例如可以复制主库的一部分表到备库,这是一种粒度更细的复制。

物理复制也叫流复制,流复制的原理是主库把WAL发送给备库,备库接收WAL后,进行重放。

流复制是基于WAL日志(相当于oracle中的redo日志)的物理复制,其原理是主库不间断地发送WAL日志流到备库,备库接收主库发送的WAL日志流后应用WAL;而逻辑复制是基于逻辑解析(logical decoding),其核心原理是主库将WAL日志流解析成一定格式,订阅节点收到解析的WAL数据流后进行应用,从而实现数据同步,逻辑复制并不是使用WAL原始日志文件进行复制,而是将WAL日志解析成了一定格式。

在逻辑复制中把主库称为源端库,备库称为目标端数据库,源端数据库根据预先指定好的逻辑解析规则对WAL文件进行解析,把DML操作解析成一定的逻辑变化信息(标准SQL语句),源端数据库把标准SQL语句发给目标端数据库,目标端数据库接收到之后进行应用,从而实现数据同步。
流复制要求主备库的大版本一致,逻辑复制可以跨大版本的数据同步,也可以实现异构数据库的数据同步。


流复制的主库可读写,从库只允许读,逻辑复制的目标端数据库要求可读写
流复制是对实例级别的复制(整个postgresql数据库),逻辑复制是选择性的复制一些表,所以是对表级别的复制。
流复制有主库的DDL、DML操作,逻辑复制只有DML操作。
 

流复制的原理:

物理复制也叫流复制,流复制的原理是主库把WAL发送给备库,备库接收WAL后,进行重放。

逻辑复制的原理:

逻辑复制也是基于WAL文件,在逻辑复制中把主库称为源端库,备库称为目标端数据库,源端数据库根据预先指定好的逻辑解析规则对WAL文件进行解析,把DML操作解析成一定的逻辑变化信息(标准SQL语句),源端数据库把标准SQL语句发给目标端数据库,目标端数据库接收到之后进行应用,从而实现数据同步。

流复制和逻辑复制的区别:

流复制主库上的事务提交不需要等待备库接收到WAL文件后的确认,逻辑复制相反。

  • 流复制要求主备库的大版本一致,逻辑复制可以跨大版本的数据同步,也可以实现异构数据库的数据同步。
  • 流复制的主库可读写,从库只允许读,逻辑复制的目标端数据库要求可读写
  • 流复制是对实例级别的复制(整个postgresql数据库),逻辑复制是选择性的复制一些表,所以是对表级别的复制。
  • 流复制有主库的DDL、DML操作,逻辑复制只有DML操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值