pg_recvlogical

功能介绍

pg_recvlogical工具通过连接指定的DN,创建或删除逻辑复制槽,以及持续、实时的从该DN获取逻辑解码中间结果,输出到文件或标准输出。

语法

  1. pg_recvlogical [OPTION]...

其中,逻辑复制槽行为参数为必选参数,必须指定一个。其余参数为可选参数,如不指定,将会读取默认值。

参数说明

  • 逻辑复制槽行为参数:必选参数。

    • --create

      创建一个新的逻辑复制槽。

    • --start

      启动该逻辑复制槽的流复制。

    • --drop

      删除一个逻辑复制槽。

  • 连接参数:

    • -d, —dbname=DBNAME

      连接的目标数据库名。

    • -h, —host=HOSTNAME

      连接的目标主机名或socket。

    • -p, —port=PORT

      连接的目标DN的HA端口号。

    • -U, —username=NAME

      连接目标库所使用的用户名。

    • -w, —no-password

      不使用密码进行连接。

    • -W, —password

      使用指定密码进行连接。

  • 复制参数:

    • -F —fsync-interval=INTERVAL

      同步到目标输出文件的间隔时间。

      单位为秒,默认值10。

    • -o, —option=NAME[=VALUE]

      指定向逻辑复制槽的输出插件添加参数。

      参数的取值为:include-xids、skip-empty-xacts、include-timestamp。

      详细请参见《开发者指南》中“SQL参考 > 函数和操作符 > 系统管理函数 > 逻辑复制函数 > options”章节。

    • -P, —plugin=PLUGIN

      指定使用的逻辑复制槽输出插件。

      默认值为mppdb_decoding。

    • -s, —status-interval=INTERVAL

      发送的心跳包间隔时间。

      单位为秒,默认值10。

    • -S, —slot=SLOT

      指定逻辑复制槽的名称。

    • -I, —startpos=PTR

      当使用已有逻辑复制槽时,指定初始复制的LSN位置。

  • 其它参数:

    • -f, —file=FILE

      设置输出到指定文件。

      直接使用”-“表示输出到stdout。

    • -n, —no-loop

      指定此参数,连接失败后不重试。

    • -v, —verbose

      输出详细信息。

    • -V, —version

      输出版本信息,随后立即退出。

    • -?, —help

      输出帮助信息,随后立即退出。

示例

  1. 创建名为test_slot的逻辑复制槽。

    1. pg_recvlogical -d postgres -S test_slot -p 26000 --create
  2. 开启流式解码,结果输出到stdout。

    1. pg_recvlogical -d postgres -S test_slot -p 26000 --start -v -f -
    2. pg_recvlogical: starting log streaming at 0/0 (slot test_slot)
    3. pg_recvlogical: initiated streaming
    4. pg_recvlogical: confirming write up to 0/0, flush to 0/0 (slot test_slot)
    5. pg_recvlogical: confirming write up to 0/2A342E8, flush to 0/2A342E8 (slot test_slot)
    6. pg_recvlogical: confirming write up to 0/2A34320, flush to 0/2A34320 (slot test_slot)
    7. pg_recvlogical: confirming write up to 0/2A34320, flush to 0/2A34320 (slot test_slot)
    8. BEGIN 16039
    9. table public.t: INSERT: a[integer]:4 b[integer]:4
    10. COMMIT 16039
    11. pg_recvlogical: confirming write up to 0/2A34450, flush to 0/2A34450 (slot test_slot)
    12. pg_recvlogical: confirming write up to 0/2A34450, flush to 0/2A34450 (slot test_slot)
  3. 删除逻辑复制槽。

    1. pg_recvlogical -d postgres -S test_slot -p 26000 --drop