标签
PostgreSQL , 分区表 , 逻辑复制 , 逻辑订阅 , 分区
https://github.com/digoal/blog/blob/master/201804/20180420_02.md#%E8%83%8C%E6%99%AF 背景
PostgreSQL 10 引入了内置分区语法,同时引入了逻辑订阅的功能。
《PostgreSQL 10.0 preview 逻辑订阅 - 原理与最佳实践》逻辑订阅简单来说就是
1、创建pub,
2、将需要订阅的表加入到pub中,
3、在接收端创建订阅sub,指定订阅哪个pub。
4、然后发布的就会解析pub中包含的表的已结束事务产生的WAL,将解析后的RECORD发送给接收端。
5、接收端收到逻辑回放信息,回放。实现增量复制的目的。
那么问题来了,分区表怎么支持的呢?
目前PG的分区表,实际数据是存在分区内的,发布时,不允许对主表发布,只能发布实际包含数据的分区。
https://www.postgresql.org/docs/devel/static/sql-createpublication.htmlOnly persistent base tables can be part of a publication.
Temporary tables, unlogged tables, foreign tables, materialized views, regular views, and partitioned tables cannot be part of a publication.
To replicate a partitioned table, add the individual partitions to the publication.
目标端,需要定义好同样的分区(猜测应该是这样的,可以试一试验证一下)。
使用EnterpriseDB xDB的复制工具,则可以直接支持分区表的复制。
https://www.enterprisedb.com/docs/en/6.2/repguide/EDB_Postgres_Replication_Server_Users_Guide.1.55.html#