企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# pg_receivexlog ## Name pg_receivexlog -- PostgreSQL集群中的流事务日志 ## Synopsis `pg_receivexlog` [`_option_`...] ## 描述 pg_receivexlog用于从一个运行的PostgreSQL 集群中流事务日志。该事务日志流使用流复制协议,并写入到文件的本地目录中。 这个目录可以被用作使用时间点恢复的归档目录(参阅[Section 24.3](#calibre_link-466))。 pg_receivexlog在服务器上产生事务日志时实时流事务日志, 并且不像[archive_command](#calibre_link-467)那样等待段的完成。因为这个原因, 当使用pg_receivexlog时不需要设置[archive_timeout](#calibre_link-468)。 事务日志在普通的PostgreSQL连接上流出,并且使用复制控制。 必须由超级用户或有`REPLICATION`权限的用户(参阅 [Section 20.2](#calibre_link-469))连接,并且`pg_hba.conf` 必须明确的允许复制连接。服务器也必须配置的[max_wal_senders](#calibre_link-470)足够高, 使流至少有一个会话可用。 如果失去连接,或者不能初步建立,带有一个非致命错误,pg_receivexlog 将无限的重试连接,并尽快重建流。要避免这种行为,使用`-n`参数。 ## 选项 下列的命令行选项控制输出的位置和格式。 `-D` `_directory_``--directory=``_directory_` 写输出的目录。 这个参数是必需的。 下列的命令行选项控制程序的运行。 `-n` `--no-loop` 不要循环连接错误。相反,立即带有错误退出。 `-v` `--verbose` 启用冗余模式。 下列的命令行选项控制数据库连接参数。 `-d` `_connstr_` `--dbname=``_connstr_` 声明用来连接到服务器的参数,作为一个连接字符串。参阅[Section 31.1.1](#calibre_link-458)获取更多信息。 该选项被称为`--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支持的环境变量(参阅[Section 31.14](#calibre_link-39))。 ## 注意 当使用pg_receivexlog而不是[archive_command](#calibre_link-467)时, 服务器将持续回收事务日志文件,即使备份没有适当的归档,因为这里没有失败的命令。 可以通过在文件还未适当的归档时有一个[archive_command](#calibre_link-467)失败来绕开: ``` archive_command = 'sleep 5 && test -f /mnt/server/archivedir/%f' ``` 最初的时限是必须的,因为pg_receivexlog使用异步复制工作, 并且因此稍微落后于主机。 ## 例子 要从服务器`mydbserver`流事务日志,并将其存储到本地目录 `/usr/local/pgsql/archive`中: ``` <samp class="literal">$</samp> <kbd class="literal">pg_receivexlog -h mydbserver -D /usr/local/pgsql/archive</kbd> ``` ## 又见 [pg_basebackup](#calibre_link-471)