更新时间:2025-08-04 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] [, ... ] ) ]

参数说明

表1 CREATE SUBSCRIPTION参数说明

参数

描述

取值范围

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

该子句指定订阅的可选参数,支持的参数如右列所示。

  • 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;