更新时间:2024-09-02 GMT+08:00

CREATE SUBSCRIPTION

功能描述

为当前数据库添加一个新的订阅。订阅名称必须与数据库中任何现有的订阅不同,订阅表示到发布者的复制连接。

注意事项

  • 该语法仅8.2.0.100及以上集群版本支持。
  • 只有系统管理员才可以创建订阅。

语法格式

1
2
3
4
CREATE SUBSCRIPTION name
    CONNECTION 'conninfo'
    PUBLICATION publication_name [, ...]
    [ WITH ( subscription_parameter [= value] [, ... ] ) ]

参数说明

  • name

    新订阅的名称。

    取值范围:字符串,要符合标识符的命名规范。

  • conninfo

    连接发布端的字符串。

    如host=1.1.1.1,2.2.2.2 port=10000,20000 dbname=postgres user=repusr1 password=password_123。

    • host

      发布端IP地址,可以同时指定发布端主机和备机的IP地址,如果同时指定了多个IP,以英文逗号分隔。

    • port

      发布端端口,此处的端口不能使用主端口,而应该使用主端口+1端口,否则会与线程池冲突。可以同时指定发布端主机和备机的端口,如果同时指定了多个端口,以英文逗号分隔。

      host和port的数量要一致,并且要一一对应。

    • dbname

      发布所在的数据库。

    • user和password

      用于连接发布端且具有系统管理员权限(SYSADMIN)或者运维管理员权限(OPRADMIN)的用户名和密码。

  • publication_name

    要订阅的发布端的发布名称,一个订阅可以对应多个发布。

  • WITH ( subscription_parameter [= value] [, … ] )

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

    • enabled

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

      取值范围:true,false。

      默认值:true。

    • create_slot

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

      取值范围:true,false。

      默认值:true。

    • slot_name

      要使用的复制槽的名称。

      取值范围:字符串。

      默认值:默认使用订阅名称作为复制槽的名称。

示例

创建一个到远程服务器的订阅,复制发布mypublication中的表。
CREATE SUBSCRIPTION mysub
    CONNECTION 'host=192.168.1.50 port=5432 user=foo dbname=foodb password=xxxx'
    PUBLICATION mypublication;