使用debezuim,实现PG同步Oracle

1. 对于bytea类型,debezuim发给kafka的是一个很短的奇怪字符串。使用wal2json直接decode出来的,是完整的数据,但是到了debezuim,就只有很短的字符串了。


2. PG逻辑复制的知识:
定义publication时,定义要复制的表,及其它过滤细节。
在接收客户端,定义subcription时,定义感兴趣的publication,还有slot。其它的不需要定义。这就有个前提,客户端已经定义好表。这是两个PG节点间的逻辑复制。
还可以将逻辑变更读出,给自己写的应用程序,例如jdbc就有逻辑复制功能,debezuim就是利用这个功能。jdbc的逻辑复制其实是利用了logical decoding功能,需要一个插件,调用插件时向它传参数,每个插件的参数会不同。它不需要创建subcription。
也可以在pg上以sql使用logical decoding,jdbc和它的原理一样。服务端需要一个publication,此时不需要创建subscription,但是在get change data时需要告诉插件获取哪个publication的变更。
对于wal2json和pgoutput都是这个套路,只是略有不同。
逻辑复制有一个限制是,不能捕获大对象变更,但是这里不要误会,表中的bytea列不是大对象,这种列可以存1g的数据,但它不算大对象,大对象是另一种概念。

你可能感兴趣的:(PostgreSQL,数据库)