9.1第二十六章

From PostgreSQL wiki
Jump to navigationJump to search

第26章. 恢复配置

目录

 26.1.存档恢复设置
 26.2.恢复目标设定
 26.3.备用服务器设置

本章介绍的设置,可在recovery.conf文件中设置。 它们只适用于持续恢复。 它们必须为任何随后的你希望需要执行的恢复重新设置。一旦恢复开始,它们不能被更改。

在设置recovery.conf中指定的格式 name='value' 。 每一个参数在每一行指定。哈希标记(#)指定接下来的行为注释。为了在参数值中嵌入一个单引号,写两个引号(’’)。

在安装中的share/ 目录提供了一个示例文件,share/ recovery.conf.sample 。



26.1. 存档恢复设置

restore_command ( string ) Shell命令执行来检索WAL文件系列的归档段。此参数是归档恢复必需的,但流的复制是可选的。任何在string中的%f会被从归档检索的文件的名称替换,任何%p被服务器上的复制的目标路径名称替换。(路径名称是相对于当前工作目录,即簇的数据目录。)任何 %r被一个包含最后有效的重启点的文件的名称替换。 这是在之前就必须保存的文件,以保证恢复能被重新启动,所以这个信息可以用来截断存档到只是最低要求,以支持从目前的恢复来重新启动。 %r 通常只用于热备份配置(见 25.2节 )。 写入 %% 实际中嵌入%字符。


重要的是该命令只有当它成功是才返回一个零退出状态。该命令会要求提供档案中​​不存在的文件名 ,但这样要求是,它必须返回非零。 例子:

 restore_command =' cp  / mnt /server/archivedir /%f  “%p” '   
 restore_command ='cp  “C:\\server\ \ archivedir \ \%r”  “%p” '   #Windows

archive_cleanup_command ( string ) 这个可选参数指定一个shell命令,将会在每个重启点执行。 archive_cleanup_command 的目的是提供 一个清理备用服务器不再需要的旧存档WAL文件的方法。任何 %r被包含最新有效的重启点的文件的名称替换。这是最先的文件,必须保持允许恢复被重新启动,因此所有早于 %r的文件可以安全地删除。 这些信息可以用来截断存档到支持恢复重新启动的最低要求。F.25章模块通常用于 archive_cleanup_command 单备份的配置,例如:

 archive_cleanup_command =’ pg_archivecleanup   / mnt /server/ archivedir  %r ’ 

但是请注意,如果有多个备用服务器都从同一个诡诞目录来恢复,您需要确保您不要删除WAL的文件,直到他们不再被任何服务器需要。archive_cleanup_command 通常用在热身备用配置(见 25.2节 )。 写入%%在命令中嵌入%字符。

如果命令返回一个非零退出状态,则WARINING日志消息将被写入。

recovery_end_command (string) 此参数指定一个shell命令,只有在恢复结束时执行。 此参数是可选的。recovery_end_command的目的是提供一个机制,清理接下来的复制或恢复。 任何%r被包含最后一个有效的重启点的文件的名称替换,像 archive_cleanup_command 。

如果命令返回一个非零退出状态,则WARNING日志消息将被写入,而且数据库将继续以任何方式启动。 一个例外是,如果该命令是由一个信号终止,该数据库将不进行启动。



26.2. 恢复目标设置

recovery_target_name (string )

此参数用pg_create_restore_point( )创建的命名的恢复点,指定恢复将继续进行。recovery_target_name , recovery_target_time 或 recovery_target_xid 其中之一都可以被指定。 默认是恢复到日志的WAL日志的末尾。

recovery_target_time (timestamp )

此参数指定时间戳决定哪个恢复将会执行。 recovery_target_time , recovery_target_name 或 recovery_target_xid 其中之一可以指定。 默认是恢复到WAL日志的的末尾。 精确的停止点也受到 recovery_target_inclusive 影响。

recovery_target_xid ( string )

此参数指定的事务ID决定哪个恢复将会执行。请记住,虽然在事务id在事务开始时按顺序分配,交易依然可以在不同的数字顺下序完成。将被恢复的事务是在指定一个之前提交的(也可以有选择的包含)。 recovery_target_xid ,recovery_target_name 或 recovery_target_time 其中之一可以指定。 默认是恢复到WAL日志的末尾。 精确的停止点也受到 recovery_target_inclusive 影响。

recovery_target_inclusive ( boolean )

指定是否停止,就在指定恢复目标(true)之后或在恢复目标(false)之后。既适用于recovery_target_time 和 recovery_target_xid ,无论哪一个在恢复时被指定。这表明事务是否有准确的目标提交时或ID,分别将包括在恢复。 默认为true。

recovery_target_timeline ( string )

指定恢复到一个特定的时间表。默认为恢复沿着与基准备份同一时间表进行恢复。设定这个到 最新的恢复到在备用服务器中有用的归档中找到的最新的时间表 。除此之外,你只需要在复杂的重新恢复的情况下设置此参数后,当在它自己在一个及时恢复之后被达成,你需要返回给一个状态 。参见 第24.3.4 来讨​​论。

pause_at_recovery_target ( boolean )

指定当目标就达到了恢复是否暂停。 默认值是true,如果恢复目标设定了。 这是为了让查询被执行 使数据库检查如果这个恢复是最是最可取的恢复点。暂停的状态可以用 能是恢复终止的pg_xlog_replay_resume()( 见 表9-58 )来终止。如果这种恢复的目标是不想要的停止点,然后关闭服务器,更改恢复目标设定到一个税后的目标,并重启来继续恢复。



26.3. 备用服务器设置

standby_mode ( boolean )

指定是否要作为备用来启动的PostgreSQL 服务器。 如果此参数为on,在归档WAL结束时,服务器将不会停止恢复,但靠提取到新的使用restore_command 的WAL段,或者是连接到用primary_conninfo 设置指定的主服务WAL段,将试着继续恢复 。


primary_conninfo ( string)

为备用服务器指定一个连接字符串来连接主服务器。 这个字符串在libpq PQconnectdb 功能接受的格式中,在 31.1节中有描述 。如果任何选项在此字符串未指定,那么相应的环境变量(见第31.13 )被选中。 如果环境变量也没有设置,那么默认就会被使用。

连接字符串应指定主服务器的主机名(或地址),如果它和备用服务器的默认的不是一样的,则还要指定端口号。同时,指定一个和主服务器( 第25.2.5.1 )上具有SUPERUSER 和LOGIN 权限的角色名称一致的用户名。如果主服务器要求密码验证,则密码也需要提供。它可以在primary_conninfo 字符串中提供,或在备用服务器上( 使用replication作为数据库名)的一个单独的 〜/.pgpass文件中。不要 primary_conninfo 字符串指定数据库名。

如果 standby_mode 是 off ,该设置没有任何作用。


trigger_file (string)

指定一个触发器文件,其存在触发备用恢复完在。 即使这个值没有设置,您仍然可以使用pg_ctl promote 提升备用服务器。如果 standby_mode 是off,则该设置没有任何影响。