pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。