举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > PostgreSQL CREATE SUBSCRIPTION

PostgreSQL CREATE SUBSCRIPTION

2023-04-06 17:18

 PostgreSQL CREATE SUBSCRIPTION

CREATE SUBSCRIPTION — 定义一个新的订阅

大纲

CREATE SUBSCRIPTION subscription_name
    CONNECTION "conninfo"
    PUBLICATION publication_name [, ...]
    [ WITH ( subscription_parameter [= value] [, ... ] ) ]

描述

CREATE SUBSCRIPTION为当前数据库添加一个新的订阅。 订阅名称必须与数据库中任何现有的订阅不同。

订阅表示到发布者的复制连接。因此,此命令不仅在本地目录中添加定义, 还会在发布者上创建复制插槽。

在运行此命令的事务提交时,将启动逻辑复制工作器以复制新订阅的数据。

关于订阅和逻辑复制的更多信息,请参见 第 30.2 节和 第 30 章。

参数

subscription_name

新订阅的名称。

CONNECTION "conninfo"

连接发布者的字符串。详细信息请见第 33.1.1 节。

PUBLICATION publication_name

要订阅的发布者上的发布名称。

WITH ( subscription_parameter [= value] [, ... ] )

该子句指定订阅的可选参数。支持的参数有:

copy_data (boolean)

指定在复制启动后是否应复制正在订阅的发布中的现有数据。 默认值是true

create_slot (boolean)

指定该命令是否要在发布者上创建复制槽。默认值是true

enabled (boolean)

指定订阅是否应该主动复制,或者是否应该只是设置,但尚未启动。 默认值是true

slot_name (string)

要使用的复制插槽的名称。默认行为是使用订阅名称作为插槽的名称。

slot_name设置为NONE时, 将不会有复制槽与订阅关联。这在需要稍后手动设置复制槽的情况下会使用。 这样的订阅必须同时enabled并且 create_slot设置为false

synchronous_commit (enum)

该参数的值会覆盖synchronous_commit设置。 默认值是off

对于逻辑复制使用off是安全的: 如果订阅者由于缺少同步而丢失事务,数据将从发布者再次发送。

进行同步逻辑复制时,不同的设置可能是合适的。 逻辑复制工作者向发布者报告写入和刷新的位置,当使用同步复制时, 发布者将等待实际刷新。这意味着,当订阅用于同步复制时, 将订阅者的synchronous_commit设置为off 可能会增加发布服务器上COMMIT的延迟。 在这种情况下,将synchronous_commit设置为 local或更高是有利的。

connect (boolean)

指定CREATE SUBSCRIPTION是否应该连接到发布者。 将其设置为false将会改变默认值enabledcreate_slotcopy_datafalse

不允许将connect设置为false的同时将 enabledcreate_slotcopy_data 设置为true

因为该选项设置为false时不会建立连接, 因此表没有被订阅,所以当启用订阅后,不会复制任何内容。 需要运行ALTER SUBSCRIPTION ... REFRESH PUBLICATION才能订阅表。

注意

有关如何在订阅和发布实例之间配置访问控制的详细信息,请参见 第 30.7 节。

创建复制槽时(默认行为), CREATE SUBSCRIPTION不能在事务块内部执行。

如果复制插槽不是作为同一命令的一部分创建的,则创建连接到相同数据库集群的订阅 (例如,在同一集群中的数据库之间进行复制或在同一个数据库中进行复制)只能成功 否则,CREATE SUBSCRIPTION调用将挂起。要做到这一点, 单独创建复制插槽(使用函数pg_create_logical_replication_slot 和插件名称pgoutput),并使用参数 create_slot = false创建订阅。这是一个实施限制,可能会在未来的版本中解除。

示例

创建一个到远程服务器的订阅,复制发布mypublicationinsert_only中的表,并在提交时立即开始复制:

CREATE SUBSCRIPTION mysub
         CONNECTION "host=192.168.1.50 port=5432 user=foo dbname=foodb"
        PUBLICATION mypublication, insert_only;

创建一个到远程服务器的订阅,复制insert_only发布中的表, 并且不开始复制直到稍后启用复制。

CREATE SUBSCRIPTION mysub
         CONNECTION "host=192.168.1.50 port=5432 user=foo dbname=foodb"
        PUBLICATION insert_only
               WITH (enabled = false);

兼容性

CREATE SUBSCRIPTION是一个PostgreSQL 扩展。

又见

ALTER SUBSCRIPTION , DROP SUBSCRIPTION, CREATE PUBLICATION, ALTER PUBLICATION


阅读全文
以上是编程学为你收集整理的 PostgreSQL CREATE SUBSCRIPTION全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  •  PostgreSQL DROP PROCEDURE

    PostgreSQL DROP PROCEDURE

    2023-04-10

    DROP PROCEDURE — 移除一个过程大纲DROP PROCEDURE [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] ...

  •  XSL-FO multi-case 对象

    XSL-FO multi-case 对象

    2023-05-19 XSL-FO教程

    XSL-FO multi-case 对象XSL-FO 参考手册定义和用法 fo:multi-case 对象包含 XSL-FO 对象的每个供选择的子树(在 fo:multi-switch...

  •  XSLT 总结

    XSLT 总结

    2023-05-08 XSLT教程

    您已经学习了 XSLT,现在该怎么办? 本节是对 XSLT 教程的总结,到本节为止,有关 XSLT 教程的基本知识已经讲解完成,如果需要更...

  •  XSLT <xsl:import> 元素

    XSLT <xsl:import> 元素

    2023-04-13 XSLT教程

    XSLT xsl:import 元素XSLTxsl:import元素用于把一个样式表的内容导入到另外一个中! 完整的 XSLT 元素参考手册定义和用法 xsl:im...

  •  XML DOM replaceChild() 方法——Element 对象

    XML DOM replaceChild() 方法——Element 对象

    2023-05-28 XMLDOM教程

    XML DOM replaceChild() 方法 Element 对象定义和用法 replaceChild() 方法替换子节点为其他节点。 如果成功该函数则返回被替换...

© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部