9.3 9.4 9.5 9.6 10 11 12 13 14 15 Current(16) 17
问题报告 纠错本页面
31.1. 发布
上一页 上一级 第 31 章 逻辑复制起始页 下一页

31.1. 发布 #

publication可以被定义在任何物理复制的主服务器上。定义有发布的节点被称为发布者。发布是从一个表或者一组表生成的改变的集合,也可以被描述为更改集合或者复制集合。每个发布都只存在于一个数据库中。

publication与模式不同,不影响表的访问。每个表可以添加到多个publication中(如果需要)。 publication目前只能包含模式中的所有表。对象必须显式添加,除非为ALL TABLES创建了一个publication。

publication可以选择将它们产生的更改限制为INSERTUPDATEDELETETRUNCATE的任意组合,类似于触发器如何由特定事件类型触发。 默认情况下,所有操作类型都会被复制。这些出版规范仅适用于DML操作;它们不影响初始数据同步副本。 (行过滤器对TRUNCATE没有影响。请参见第 31.3 节)。

已发布的表必须配置一个副本标识,以便能够复制 UPDATEDELETE操作,从而在订阅 方能够识别出需要更新或删除的适当行。默认情况下,如果存在主键, 则使用主键。另一个唯一索引(具有某些额外要求)也可以设置为副本 标识。如果表没有任何合适的键,则可以将其设置为副本标识 FULL,这意味着整个行成为键。当指定副本标识 FULL时,可以在订阅方使用索引来搜索行。候选索引 必须是btree、非部分的,并且最左侧的索引字段必须是引用已发布表列 的列(而不是表达式)。这些对非唯一索引属性的限制遵循了一些对主键 强制执行的限制。如果没有这样的合适索引,则在订阅方的搜索可能会非常 低效,因此副本标识FULL应仅作为没有其他解决方案 时的后备选项。如果在发布方设置了FULL以外的副本 标识,则在订阅方也必须设置一个由相同或更少列组成的副本标识。有关如 何设置副本标识的详细信息,请参见 REPLICA IDENTITY。如果将没有副本标识的 表添加到复制UPDATEDELETE 操作的发布中,那么后续的UPDATEDELETE操作将在发布方引发错误。 INSERT操作可以在没有任何副本标识的情况下继续进行。

每一个发布都可以由多个订阅者。

Publication通过使用CREATE PUBLICATION命令创建并且可以在之后使用相应的命令进行修改或者删除。

表可以使用ALTER PUBLICATION动态地增加或者移除。ADD TABLE以及DROP TABLE操作都是事务性的,因此一旦该事务提交,该表将以正确的快照开始或者停止复制。


上一页 上一级 下一页
第 31 章 逻辑复制 起始页 31.2. 订阅

AltStyle によって変換されたページ (->オリジナル) /