pgcat增强的 PostgreSQL 逻辑复制软件
Why pgcat?
PostgreSQL 内置的逻辑复制有如下缺陷:
- 只支持普通表作为复制目标
- 不能过滤复制数据,使得两个机房之间互相复制时发生死循环
- 不支持表名映射
- 没有冲突解决机制
pgcat 做了如下增强:
- 支持所有表类型,包括 view、fdw、分区表、citus的分布式表等等
- 只复制本地产生的数据变更,使得可以机房之间安全复制
- 表名映射,可以将多个源表映射到一个目标表
- 可选的last-writer-win(类似Cassandra)冲突解决机制(通过trigger来实现)
- 复制进度保存到单独的表,使得进度可以failover
pgcat 重用了 postgresql 内置的 pgoutput ouput plugin 和 publication,使用 golang 重写了 subscription 部分,以单独的进程来运行。
评论