31.2. Subscription

订阅者数据库的行为与任何其他 PostgreSQL 实例相同,并且可以通过定义自己的发布而用作其他数据库的发布者。

如果需要,订户节点可以具有多个订阅。可以在单个发布者-订阅者对之间定义多个订阅,在这种情况下,必须注意确保订阅的发布对象不重叠。

每个订阅将通过一个复制插槽接收更改(请参阅Section 26.2.6)。对于先前存在的表数据的初始数据同步,可能需要其他临时复制插槽。

逻辑复制预订可以是同步复制的备用数据库(请参见Section 26.2.8)。备用名称默认为订阅名称。可以在订阅的连接信息中将备用名称指定为application_name

如果当前用户是超级用户,则订阅将由pg_dump转储。否则,将写警告并跳过订阅,因为非超级用户无法从pg_subscription目录读取所有订阅信息。

该订阅是使用CREATE SUBSCRIPTION添加的,可以随时使用ALTER SUBSCRIPTION命令停止/恢复,并可以使用DROP SUBSCRIPTION删除。

删除并重新创建订阅后,同步信息将丢失。这意味着此后必须重新同步数据。

模式定义不被复制,并且发布的表必须在订阅服务器上存在。仅常规表可能是复制的目标。例如,您不能复制到视图。

使用完全限定的表名在发布者和订阅者之间匹配表。不支持复制到订阅服务器上名称不同的表。

表的列也按名称匹配。订户表中的列 Sequences 不需要与发布者的相匹配。列的数据类型不需要匹配,只要可以将数据的文本表示形式转换为目标类型即可。例如,您可以从integer类型的列复制到bigint类型的列。目标表还可以具有发布表未提供的其他列。任何此类列都将使用目标表的定义中指定的默认值填充。

31 .2.1. 复制插槽 Management

如前所述,每个(活动)订阅都从远程(发布)端的复制插槽接收更改。通常,使用CREATE SUBSCRIPTION创建订阅时会自动创建远程复制插槽,而使用DROP SUBSCRIPTION删除订阅时会自动删除远程复制插槽。但是,在某些情况下,单独操作预订和基础复制插槽可能是有用或必要的。以下是一些方案:

上一章 首页 下一章