更新时间:2023-10-23 GMT+08:00

限制

发布订阅基于逻辑复制实现,继承所有逻辑复制的限制,同时发布订阅还有下列额外的限制或者缺失的功能。
  • 数据库模式和DDL命令不会被复制。初始模式可以手工使用gs_dump --schema-only进行拷贝。后续的模式改变需要手工保持同步。
  • 序列数据不复制。serial类型的数据或绑定到sequence的指定列如果是table的一部分则会被复制,但是订阅端上的序列本身的数据不会更新。如果订阅端是一个只读数据库,这不是问题。如果订阅端将要执行switchover或failover,那么序列需要被更新,可以拷贝发布端的数据(可以使用gs_dump)或根据订阅端的表数据指定其序列最大值。
  • 只有表支持复制,包括分区表。试图复制其他类型的关系,例如视图、物化视图或外部表,将会导致错误。
  • 同一数据库内的多个订阅不应当订阅内容重复的发布(指发布相同的表),否则会产生数据重复或者主键冲突。
  • 如果被发布的表中包含不支持btree/hash索引的数据类型(如地理类型等),那么该表需要有主键,才能成功的复制UPDATE/DELETE操作到订阅端。否则复制会失败,同时订阅端会出现“FATAL: could not identify an equality operator for type xx”的日志。