选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 当前版本 (18) / 17 / 17 / 16 / 16 / 15 / 15 / 14 / 14
测试与开发版本: 19 / 19 / devel / devel
不受支持的版本: 13 / 13 / 12 / 12 / 11 / 11 / 10 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2
历史版本PostgreSQL 9.3 已于 2018 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本

pg_receivexlog

pg_receivexlog — 从一个 PostgreSQL 服务器流式接收事务日志

大纲

pg_receivexlog [option...]

描述

pg_receivexlog 用于从一个正在运行的 PostgreSQL 集簇流式接收事务日志。事务日志使用 流复制协议接收,并写入一个本地文件目录。该目录可用作执行时间点恢复 (见第 24.3 节)时的归档位置。

pg_receivexlog 会实时流式接收服务器上正在生成的 事务日志,而不像 archive_command 那样等待段文件完成。 因此,使用 pg_receivexlog 时无需设置 archive_timeout

事务日志通过一个常规的 PostgreSQL 连接并使用 复制协议进行流式传输。建立连接时必须使用超级用户或具有 REPLICATION 权限的用户(参见第 20.2 节), 并且 pg_hba.conf 必须允许复制连接。服务器还必须将 max_wal_senders 设置得足够高,以便至少为该流保留一个 可用会话。

如果连接丢失,或者最初就无法建立连接,且错误不是致命的, pg_receivexlog 将无限重试连接,并尽快恢复流式传输。 要避免这种行为,可使用 -n 参数。

选项

下列命令行选项控制输出的位置和格式。

-D directory
--directory=directory

要把输出写入的目录。

此参数为必需项。

下列命令行选项控制程序的运行。

-n
--no-loop

不在连接错误上循环重试,而是立即报错退出。

-v
--verbose

启用详细输出模式。

下列命令行选项控制数据库连接参数。

-d connstr
--dbname=connstr

以连接字符串的形式指定用于连接服务器的参数。更多信息见 第 31.1.1 节

出于与其他客户端应用一致的考虑,该选项名为 --dbname, 但由于 pg_receivexlog 并不连接到集簇中的任何 特定数据库,连接字符串中的数据库名会被忽略。

-h host
--host=host

指定服务器所在主机的主机名。如果该值以斜杠开头,则将其用作 Unix 域 套接字所在目录。默认值取自 PGHOST 环境变量(若已设置), 否则尝试 Unix 域套接字连接。

-p port
--port=port

指定服务器监听连接所用的 TCP 端口或本地 Unix 域套接字文件扩展名。 默认为 PGPORT 环境变量(若已设置),否则为编译时的 内置默认值。

-s interval
--status-interval=interval

指定向服务器发回状态包的间隔秒数。这使服务器端更容易监控进度。 值为零将完全禁用周期性状态更新,不过当服务器请求时仍会发送一次更新, 以避免超时断开连接。默认值为 10 秒。

-U username
--username=username

要用来连接的用户名。

-w
--no-password

绝不提示输入密码。如果服务器要求密码认证,而密码又无法通过诸如 .pgpass 文件等其他方式获得,则连接尝试将失败。 该选项可用于没有用户在场输入密码的批处理作业和脚本。

-W
--password

强制 pg_receivexlog 在连接数据库之前提示 输入密码。

该选项绝非必需,因为如果服务器要求密码认证, pg_receivexlog 会自动提示输入密码。不过, pg_receivexlog 会浪费一次连接尝试来发现 服务器需要密码。在某些情况下,输入 -W 可以避免这次 额外的连接尝试。

其他选项也可用:

-V
--version

打印 pg_receivexlog 的版本并退出。

-?
--help

显示有关 pg_receivexlog 命令行参数的帮助 并退出。

环境

和大部分其他 PostgreSQL 工具一样,这个工具也使用 libpq 支持的环境变量(参见第 31.14 节)。

注解

当使用 pg_receivexlog 而不是 archive_command 时,即使备份没有被正确归档,服务器也会 继续回收事务日志文件,因为没有会失败的命令。可以通过配置一个在文件尚未被正确 归档时就会失败的 archive_command 来规避这一问题,例如:

archive_command = 'sleep 5 && test -f /mnt/server/archivedir/%f'

设置初始超时是必要的,因为 pg_receivexlog 采用 异步复制方式工作,因此可能略微落后于主库。

示例

要从位于 mydbserver 的服务器流式接收事务日志,并把它存储 到本地目录 /usr/local/pgsql/archive

$ pg_receivexlog -h mydbserver -D /usr/local/pgsql/archive

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。