# 皮克_收货

皮克_receivewal — 从 PostgreSQL 服务器流式传输预写日志

# 概要

pg_receivewal [选项...]

# 描述

皮克_receivewal 用于从正在运行的 PostgreSQL 集群流式传输预写日志。预写日志使用流式复制协议进行流式传输,并写入本地文件目录。此目录可用作使用时间点恢复进行还原的存档位置(请参阅第 26.3 节)。

皮克_在服务器上生成预写日志时,receivewal 会实时流式传输预写日志,并且不会像这样等待段完成档案_命令做。因此,无需设置档案_超时使用 pg 时_接收。

与 PostgreSQL 备用服务器的 WAL 接收器不同,pg_默认情况下,receivewal 仅在关闭 WAL 文件时刷新 WAL 数据。选项- 同步必须指定实时刷新 WAL 数据。自 pg_receivewal 不应用 WAL,你不应该让它成为同步备用同步_犯罪等于远程应用.如果是这样,它将看起来是一个永远不会赶上的备用,并将导致事务提交阻塞。为避免这种情况,您应该为同步_支持_名字,或指定应用名称为 pg_接收不匹配的,或更改的值同步提交除了远程应用.

预写日志通过常规 PostgreSQL 连接进行流式传输,并使用复制协议。必须与具有以下权限的用户建立连接复制权限(见第 22.2 节) 或超级用户,以及pg_hba.conf必须允许复制连接。服务器还必须配置最大限度_沃尔_发件人设置得足够高以使至少一个会话可用于流。

pg 时计算预写日志流的起始点_接收开始:

  1. 首先,扫描写入WAL段文件的目录,找到最新完成的段文件,以下一个WAL段文件的开头为起点。

  2. 如果用之前的方法无法计算起点,则使用最新的 WAL 刷新位置,由服务器从IDENTIFY_SYSTEM命令。

    如果连接丢失,或者如果最初无法建立连接,则出现非致命错误,pg_receivewal 将无限期地重试连接,并尽快重新建立流。要避免这种行为,请使用-n范围。

    在没有致命错误的情况下,pg_receivewal 将一直运行直到被 SIGINT 信号终止(控制+C)。

# 选项

-D *目录*
--目录=*目录*

要将输出写入的目录。

此参数是必需的。

-E *lsn*
--endpos=*lsn*

当接收到达指定的 LSN 时,自动停止复制并以正常退出状态 0 退出。

如果有一条 LSN 正好等于的记录*lsn*, 记录将被处理。

--如果不存在

不出错时--创建槽已指定且具有指定名称的插槽已存在。

-n
--无循环

不要循环连接错误。相反,立即退出并出现错误。

--不同步

此选项导致pg_receivewal不强制 WAL 数据刷新到磁盘。这更快,但意味着随后的操作系统崩溃可能会使 WAL 段损坏。通常,此选项对测试很有用,但在生产部署上进行 WAL 归档时不应使用。

此选项不兼容- 同步.

-s *间隔*
--状态间隔=*间隔*

指定状态数据包发送回服务器之间的秒数。这样可以更轻松地监控服务器的进度。零值将完全禁用定期状态更新,尽管在服务器请求时仍会发送更新,以避免超时断开连接。默认值为 10 秒。

-S *槽名*
--槽=*槽名*

需要 pg_receivewal 使用现有的复制槽(请参阅第 27.2.6 节)。使用此选项时,pg_receivewal 将向服务器报告刷新位置,指示每个段何时已同步到磁盘,以便服务器可以在不需要时删除该段。

当 pg 的复制客户端_receivewal 在服务器上配置为同步备用,然后使用复制槽将向服务器报告刷新位置,但仅在 WAL 文件关闭时。因此,该配置将导致主服务器上的事务等待很长时间并且实际上无法令人满意地工作。选项- 同步(见下文)必须指定,才能使其正常工作。

- 同步

收到 WAL 数据后立即将其刷新到磁盘。刷新后也会立即向服务器发送一个状态包,不管--状态间隔.

如果 pg 的复制客户端应该指定这个选项_在服务器上配置receivewal作为同步备机,保证及时反馈给服务器。

-v
--详细

启用详细模式。

-Z *等级*
--压缩=*等级*

启用预写日志的 gzip 压缩,并指定压缩级别(0 到 9,0 表示不压缩,9 表示最佳压缩)。后缀.gz将自动添加到所有文件名。

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

-d *connstr*
--dbname=*connstr*

指定用于连接到服务器的参数,作为连接字符串;这些将覆盖任何冲突的命令行选项。

该选项被称为--dbname为了与其他客户端应用程序保持一致,但因为 pg_receivewal 不连接到集群中的任何特定数据库,连接字符串中的数据库名称将被忽略。

-h *主持人*
--主机=*主持人*

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

-p *港口*
--端口=*港口*

指定服务器正在侦听连接的 TCP 端口或本地 Unix 域套接字文件扩展名。默认为PGPORT环境变量(如果设置)或编译的默认值。

-U *用户名*
--用户名=*用户名*

要连接的用户名。

-w
--无密码

永远不要发出密码提示。如果服务器需要密码验证,而密码无法通过其他方式获得,例如.pgpass文件,连接尝试将失败。此选项在没有用户输入密码的批处理作业和脚本中很有用。

-W
- 密码

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

这个选项从来都不是必需的,因为 pg_如果服务器要求密码验证,receivewal 会自动提示输入密码。然而,pg_receivewal 将浪费一次连接尝试,发现服务器需要密码。在某些情况下,值得输入-W以避免额外的连接尝试。

皮克_receivewal 可以执行以下两个操作之一来控制物理复制槽:

--创建槽

使用中指定的名称创建一个新的物理复制槽- 投币口,然后退出。

--drop-slot

删除指定名称的复制槽- 投币口,然后退出。

还提供了其他选项:

-五
--版本

打印页面_接收WAL版本并退出。

-?
--救命

显示关于pg的帮助_receivewal命令行参数,然后退出。

# 退出状态

pg_当被SIGINT信号终止时,receivewal将以状态0退出。(这是结束它的正常方式。因此这不是一个错误。)对于致命错误或其他信号,退出状态将为非零。

# 环境

与大多数其他PostgreSQL实用程序一样,该实用程序使用libpq支持的环境变量(请参阅第34.15节).

环境变量PG_颜色指定是否在诊断消息中使用颜色。可能的值是总是,汽车从不.

# 笔记

使用pg时_接收而不是档案文件_命令作为主要的WAL备份方法,强烈建议使用复制插槽。否则,服务器可以在备份前自由回收或删除预写日志文件,因为它没有任何来自档案文件_命令或者复制槽,关于WAL流被归档的距离。但是,请注意,如果接收器不能及时获取WAL数据,复制插槽将填满服务器的磁盘空间。

pg_如果在源集群上启用了组权限,receivewal将保留对接收到的WAL文件的组权限。

# 例子

从位于的服务器流式传输预写日志mydbserver并将其存储在本地目录中/usr/local/pgsql/archive:

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

# 另见

pg_基本备份