pg_standby

pg_standby —支持创建 PostgreSQL 热备份服务器

Synopsis

pg_standby [ option ...] archivelocation nextwalfile walfilepath [ restartwalfile ]

Description

pg_standby 支持创建“热备用”数据库服务器。它被设计为可用于生产的程序,并且如果您需要进行特定的修改,还可以自定义模板。

pg_standby 被设计为正在 await 的restore_command,它是将标准存档恢复转换为热备份操作所必需的。还需要其他配置,所有这些都在主服务器手册中进行了描述(请参阅Section 26.2)。

要将备用服务器配置为使用 pg_standby,请将其放入其recovery.conf配置文件中:

restore_command = 'pg_standby archiveDir %f %p %r'

其中* archiveDir *是应从其中还原 WAL 段文件的目录。

如果指定了* restartwalfile ,通常使用%r宏,则将从 archivelocation 中删除逻辑上在该文件之前的所有 WAL 文件。这样可以最大限度地减少需要保留的文件数量,同时保留崩溃重新启动功能。如果 archivelocation 是此特定备用服务器的临时暂存区域,则使用此参数是适当的,但当 archivelocation *用作长期 WAL 归档区域时,不是

pg_standby 假定* archivelocation 是服务器所有者用户可读的目录。如果指定 restartwalfile *(或-k),则archivelocation *目录也必须可写。

当主服务器发生故障时,有两种方法可以故障转移到“热备用”数据库服务器:

Options

pg_standby 接受以下命令行参数:

Notes

pg_standby 设计用于 PostgreSQL 8.2 及更高版本。

PostgreSQL 8.3 提供了%r宏,该宏旨在让 pg_standby 知道它需要保留的最后一个文件。在 PostgreSQL 8.2 中,如果需要清除归档文件,则必须使用-k选项。该选项在 8.3 中仍然可用,但是不建议使用。

PostgreSQL 8.4 提供了recovery_end_command选项。如果没有此选项,则剩余的触发文件可能很危险。

pg_standby 用 C 编写,具有易于修改的源代码,具有专门指定的部分,可根据您的需要进行修改

Examples

在 Linux 或 Unix 系统上,您可以使用:

archive_command = 'cp %p .../archive/%f'

restore_command = 'pg_standby -d -s 2 -t /tmp/pgsql.trigger.5442 .../archive %f %p %r 2>>standby.log'

recovery_end_command = 'rm -f /tmp/pgsql.trigger.5442'

存档目录实际位于备用服务器上的位置,以便archive_command通过 NFS 对其进行访问,但是文件在备用目录本地(启用使用ln)。这将:

在 Windows 上,您可以使用:

archive_command = 'copy %p ...\\archive\\%f'

restore_command = 'pg_standby -d -s 5 -t C:\pgsql.trigger.5442 ...\archive %f %p %r 2>>standby.log'

recovery_end_command = 'del C:\pgsql.trigger.5442'

请注意,反斜杠需要在archive_command中加倍,但不能在restore_commandrecovery_end_command中加倍。这将:

Windows 上的copy命令设置文件完全复制之前的最终文件大小,这通常会使 pg_standby 感到困惑。因此,一旦 pg_standby 看到合适的文件大小,它将 await* sleeptime *秒。 GNUWin32 的cp仅在文件复制完成后才设置文件大小。

由于 Windows 示例在两端都使用copy,因此其中一个或两个服务器可能正在通过网络访问存档目录。

Author

西蒙·里格斯<simon@2ndquadrant.com>

See Also

pg_archivecleanup

上一章 首页 下一章