解码器是把WAL日志解析成逻辑数据的过程,将用户定阅的数据变化(即对某些表的insert/update/delete操作来带的数据变化)输出成特定的数据格式
需要安装一堆插件,在centos上非常难于安装,官方给出的例子也是基于debein操作系统
debezium对wal2json的支持不好,他自己官网说的
postgres-10 纳入了内核 以下为pgoutput解析出来的逻辑数据
连接为
pg即可以逻辑复制,也可以物理复制 没有互斥
物理层面、逻辑层面完全一致:主备数据库的物理块完全一样,逻辑层面也 完全一样,达到金融级需求。特点如下:
2017年逻辑复制发布到pg10的内核,作为PG的重要特性基于REDO流,之前内核没有时大家都是基于pglogical插件来做
不叫主从复制了,是发布订阅方式实现逻辑复制达到同步数据
上图的订阅断可以为一个pg也可以为kafka连接器伪造一个订阅断
replication slots 是从postgresql 9.4 引入的,一种自动化的方法来确保发布与订阅 如果备掉线了,slots会申请保留WAL的日志造成堆积,还有就是 订阅断存在冲突的记录时,他会同样申请WAL保留相应日志
坑就是会造成wal日志堆积,进而影响整库性能,最终造成崩溃
通俗的说:
复制槽 能够保存逻辑或物理流复制的基础指向WAL日志的信息,有点儿MySQL的位点信息的意思 可以暂时这么理解
问题:
逻辑流复制用上事务槽,如果事务槽不释放导致wal慢的情况可能把库跟搞死了,这个怎么解决哈
回答 这个就要注意,因为如果很久没有回放,就会导致wal日志堆积
追加:
1)避免长事务,一般超过1天的事务理论上都可以取消掉的。
2)防止复制节点掉线,如果掉线了,slot就会保留他们需要的wal日志。
-------------------------------------------------------
3)如果上面的方法有难度,就可以考虑不走slot,把keep_wal_segments设置大一点
4)针对物理流复制,还可以开启归档,不走slot,从归档中异步同步数据。
一个发布端pg一个订阅断pg
debezium
pglogical
修改主库的postgresql.conf
wal_level=logical
max_wal_senders=10
max_replication_slots=8
ddl同步搞定不了 debizum能搞定
建表得有replicatoin标识否则删除数据时报错
本文地址:https://blog.csdn.net/maqingbin8888/article/details/107578228
如对本文有疑问, 点击进行留言回复!!
JavaScript 好题汇总分享(持续更新,看到好题就写)
XMLHttpRequest 2级 &&进度事件&&JSONP
使用递归原生实现拷贝&&最简单的方法实现深拷贝
网友评论