postgresql逻辑复制
PostgreSQL把所有逻辑解析相关的事情全部放在数据库中的复制槽进行管理,大包大揽。前几个版本的逻辑复制支持的还不太好,近期的几个大版本中,逻辑复制是主要的功能提升之一。
PG方案的优势:
- 非常灵活,把逻辑解码接口提供给用户,有多种类的解析方式
- 用户可根据需求订阅所需要的数据
PG方案的劣势:
- 知识点多学习成本相对MYSQL要高很多。仅仅是基础知识点:发布、订阅、walsender、复制槽、output plugin等等,我相信很多人没有弄明白他们概念和关系
- 干最累的活挨最毒的打。逻辑解析的问题全部暴露在数据库中,wal积压、大事物、长事务、reorder事务排序、权限问题、流式传输等等都是PG要考虑的问题
mysql的binlog
mysql把所有解析出来的逻辑数据放在本地——binlog文件中,方案简单。mysql的binlog约等于PostgreSQL开启全表逻辑复制并写入本地。
MYSQL方案的优势:
- 简单粗暴,mysql不把逻辑解码接口直接暴露给用户,而是把已解析出来的文件直接给到用户,用户不需要关心怎么解析的,直接读binlog文件即可
- 生态成熟。个人认为mysql生态成熟跟binlog有较大关系,在互联网时代PG的逻辑复制还很弱,而binlog十分简单,下游解析binlog把数据放到其他平台已成为一种常见方案
MYSQL方案的劣势:
- 数据必须全部解析,不可定制化订阅数据,灵活性差
- 两阶段提交。由于mysql主从强依赖binlog,又导致binlog数据在提交的时候必须全部落盘到binlog file,一次提交必须写两份(或者两种)日志——binlog和redolog,日志双写是mysql永恒的痛点之一。
oracle的逻辑复制
oracle本身是由逻辑DG的功能的,基本上没见有人用过,这里只聊logminer。oracle数据库本身提供了logminer这样的接口来解析日志,逻辑复制链路管理完全没有,依赖第三方工具来创建和管理复制链路
ORACLE方案的优势:
- 只提供解析接口,没有复制链路管理,对于数据库本身来说非常省心
- 充值就有方案。把强大的OGG直接买下来,不要说我ORACLE没有提供逻辑复制解决方案,我们不仅有,而且很强大、认可度高。
ORACLE方案的劣势:
- 依赖第三方软件管理复制链路
总之,PG的逻辑复制是大包大揽什么都做,非常有开源精神、技术精神。MYSQL的方案简单粗暴但好用,有点“一步到位”的意思。ORACLE属于给个接口后就什么都不管,全部给第三方管理,但对于客户来说是有成熟的解决方案的。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




