文档首页 > > 开发指南> SQL参考> 函数和操作符> 备份恢复控制函数

备份恢复控制函数

分享
更新时间: 2019/07/22 GMT+08:00

备份控制函数

备份控制函数可帮助进行在线备份。

  • pg_create_restore_point(name text)

    描述:为执行恢复创建一个命名点。(需要管理员角色)

    返回值类型:text

    备注:pg_create_restore_point创建了一个可以用作恢复目的、有命名的事务日志记录,并返回相应的事务日志位置。在恢复过程中,recovery_target_name可以通过这个名称定位对应的日志恢复点,并从此处开始执行恢复操作。避免使用相同的名称创建多个恢复点,因为恢复操作将在第一个匹配(恢复目标)的名称上停止。

  • pg_current_xlog_location()

    描述:获取当前事务日志的写入位置。

    返回值类型:text

    备注:pg_current_xlog_location使用与前面那些函数相同的格式显示当前事务日志的写入位置。如果是只读操作,不需要系统管理员权限。

  • pg_current_xlog_insert_location()

    描述:获取当前事务日志的插入位置。

    返回值类型:text

    备注:pg_current_xlog_insert_location显示当前事务日志的插入位置。插入点是事务日志在某个瞬间的“逻辑终点”,而实际的写入位置则是从服务器内部缓冲区写出时的终点。写入位置是可以从服务器外部检测到的终点,如果要归档部分完成事务日志文件,则该操作即可实现。插入点主要用于服务器调试目的。如果是只读操作,不需要系统管理员权限。

  • pg_start_backup(label text [, fast boolean ])

    描述:开始执行在线备份。(需要管理员角色或复制的角色)

    返回值类型:text

    备注:pg_start_backup接受一个用户定义的备份标签(通常这是备份转储文件存放地点的名字)。这个函数向数据库集群的数据目录写入一个备份标签文件,然后以文本方式返回备份的事务日志起始位置。

    SELECT pg_start_backup('label_goes_here');
     pg_start_backup
    -----------------
     0/3000020
    (1 row)
  • pg_stop_backup()

    描述:完成执行在线备份。(需要管理员角色或复制的角色)

    返回值类型:text

    备注:pg_stop_backup删除pg_start_backup创建的标签文件,并且在事务日志归档区里创建一个备份历史文件。这个历史文件包含给予pg_start_backup的标签、备份的事务日志起始与终止位置、备份的起始和终止时间。返回值是备份的事务日志终止位置。计算出中止位置后,当前事务日志的插入点将自动前进到下一个事务日志文件,这样,结束的事务日志文件可以被立即归档从而完成备份。

  • pg_switch_xlog()

    描述:切换到一个新的事务日志文件。(需要管理员角色)

    返回值类型:text

    备注:pg_switch_xlog移动到下一个事务日志文件,以允许将当前日志文件归档(假定使用连续归档)。返回值是刚完成的事务日志文件的事务日志结束位置+1。如果从最后一次事务日志切换以来没有活动的事务日志,则pg_switch_xlog什么事也不做,直接返回当前事务日志文件的开始位置。

  • pg_xlogfile_name(location text)

    描述:将事务日志的位置字符串转换为文件名。

    返回值类型:text

    备注:pg_xlogfile_name仅抽取事务日志文件名称。如果给定的事务日志位置恰好位于事务日志文件的交界上,这两个函数都返回前一个事务日志文件的名字。这对于管理事务日志归档来说是非常有利的,因为前一个文件是当前最后一个需要归档的文件。

  • pg_xlogfile_name_offset(location text)

    描述:将事务日志的位置字符串转换为文件名并返回在文件中的字节偏移量。

    返回值类型:text,integer

    备注:可以使用pg_xlogfile_name_offset从前述函数的返回结果中抽取相应的事务日志文件名称和字节偏移量。例如:

    SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup());
    NOTICE:  pg_stop_backup cleanup done, waiting for required WAL segments to be archived
    NOTICE:  pg_stop_backup complete, all required WAL segments have been archived
            file_name         | file_offset 
    --------------------------+-------------
    000000010000000000000003  |         272
    (1 row)
  • pg_xlog_location_diff(location text, location text)

    描述:计算两个事务日志位置之间在字节上的区别。

    返回值类型:numeric

恢复控制函数

恢复信息函数提供了当前备机状态的信息。这些函数可能在恢复期间或正常运行中执行。

  • pg_is_in_recovery()

    描述:如果恢复仍然在进行中则返回true。

    返回值类型:bool

  • pg_last_xlog_receive_location()

    描述:获取最后接收事务日志的位置并通过流媒体复制同步到磁盘。在流复制仍在进行,事务日志将持续递增。如果恢复已完成,则这个值将保持最后接收事务记录的状态并在恢复期间同步到磁盘。如果不能用流复制,或还没有开始,这个函数返回NULL。

    返回值类型:text

  • pg_last_xlog_replay_location()

    描述:获取最后一个事务日志在恢复时重放的位置。如果恢复仍在进行,事务日志将持续递增。如果已经完成恢复,则将保持在恢复期间最后接收WAL记录的值。如果未进行恢复但服务器正常启动时,则这个函数返回NULL。

    返回值类型:text

  • pg_last_xact_replay_timestamp()

    描述:获取最后一个事务在恢复时重放的时间戳。这是为在主节点上生成事务提交或终止WAL记录的时间。如果在恢复时没有事务重放,则这个函数返回NULL。否则,如果恢复仍在进行,则事务日志将持续递增。如果恢复已经完成,则将保持在恢复期间最后接收WAL记录的值。如果服务器无需恢复就已正常启动,则这个函数返回NULL。

    返回值类型:timestamp with time zone

恢复控制函数控制恢复的进程。这些函数可能只在恢复时被执行。

  • pg_is_xlog_replay_paused()

    描述:如果恢复暂停则返回true。

    返回值类型:bool

  • pg_xlog_replay_pause()

    描述:立即暂停恢复。

    返回值类型:void

  • pg_xlog_replay_resume()

    描述:如果恢复处于暂停状态,则重新启动。

    返回值类型:void

当恢复暂停时,没有发生数据库更改。如果是在热备里,所有新的查询将看到一致的数据库快照,并且不会有进一步的查询冲突产生,直到恢复继续。

如果不能使用流复制,则暂停状态将无限的延续。当流复制正在进行时,将连续接收WAL记录,最终将填满可用磁盘空间,这个进度取决于暂停的持续时间,WAL生成的速度和可用的磁盘空间。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区