PostgreSQL 9.4.4 中文手册
上一页 | 上一级 |  | 下一页

# 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`

  不要循环连接错误。相反，立即带有错误退出。

`-s `interval``
`--status-interval=`interval``

  声明状态数据包发送回服务器的秒数。这允许对服务器进程的更简单的监视。为了避免连接超时， 零值完全禁用定期状态更新，尽管服务器需要时仍然发送一个更新。缺省值是10秒。

`-S `slotname``
`--slot=`slotname``

  要求pg_receivexlog使用一个现有的复制槽 （参阅第 25.2.6 节）。 当使用了这个选项时，pg_receivexlog将给服务器报告刷新位置， 表明每个段何时同步到了磁盘上，这样如果不再需要这个段了，服务器就可以删除它。 当使用这个参数时，确保pg_receivexlog不能通过不小心设置 synchronous_standby_names而成为同步备用是非常重要的； 为了正确的工作，它不会太频繁的刷新数据。

`-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` 环境变量（如果设置了），否则是内编译的缺省。

`-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作为主WAL备份方式时，强烈建议使用复制槽。 否则，服务器在事务日志文件被恢复之前可以自由的重利用或删除它们， 因为它没有任何来自archive_command或复制槽的信息， 说明WAL流多长时间被归档。然而，请注意，如果接收者没有保持获取WAL数据， 那么复制槽将填满服务器的磁盘空间。

## 例子

要从服务器`mydbserver`流事务日志，并将其存储到本地目录 `/usr/local/pgsql/archive`中：

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

## 又见

pg_basebackup

上一页 | 起始页 | 下一页
pg_isready | 上一级 | pg_recvlogical