postgresql的恢复

举报
宁谷花雨 发表于 2022/10/25 20:27:53 2022/10/25
【摘要】 1、backup_label文件#define BACKUP_LABEL_FILE        "backup_label"#define BACKUP_LABEL_OLD        "backup_label.old"在特定条件下,会有一个文件,名为 backup_label在StartupXLOG执行时,通过 read_backup_label 函数来进行读取:就是:pg_star...

1、backup_label文件
#define BACKUP_LABEL_FILE        "backup_label"
#define BACKUP_LABEL_OLD        "backup_label.old"

在特定条件下,会有一个文件,名为 backup_label
在StartupXLOG执行时,通过 read_backup_label 函数来进行读取:

就是:pg_start_backup,会生成 backup_label文件。pg_stop_backup,会删除backup_label文件。
而如果StartupXLOG函数运行时,发现了backup_label文件,那么意味着它处正在从online backup中恢复的过程中。


backup_label文件包含什么内容:

CHECKPOINT LOCATION:记录此命令创建的检查点的LSN位置。
START WAL LOCATION:做恢复时用到的WAL日志文件的位置。不与PITR一起使用,而是与流式复制一起使用。它被命名为“START WAL LOCATION”,因为处于复制模式的备用服务器在初始启动时只读取一次该值。
BACKUP MET HOD:用于进行此基础备份的方法(pg_start_backup或pg_basebackup)。
BACKUP FROM:显示此备份是从主备份还是从备用备份。
START TIME:执行pg_start_backup时的时间戳。
LABEL:在pg_start_backup中指定的标签。
START TIMELINE:备份开始的时间线。这是为了进行健全性检查,并已在版本11中引入。

2、minRecoveryPoint
在archive recovery期间,为了防止重复回放redo日志,

typedef enum DBState
{
    DB_STARTUP = 0,/*数据库启动*/
    DB_SHUTDOWNED,/*数据库正常关闭*/
    DB_SHUTDOWNED_IN_RECOVERY,/*数据库在恢复时关闭*/
    DB_SHUTDOWNING,/*数据库启动到正常关闭过程中崩溃*/
    DB_IN_CRASH_RECOVERY,/*数据库在恢复过程中崩溃*/
    DB_IN_ARCHIVE_RECOVERY,/*数据库处于归档恢复*/
    DB_IN_PRODUCTION/*数据库处于正常工作状态,等待接受事务处理*/
} DBState;

DB_STARTUP:表示数据库正在启动状态,实际上没有使用该状态。
DB_SHUTDOWNED:数据库实例正常关闭(非standby)控制文件写入的状态就是这个状态
DB_SHUTDOWNED_IN_RECOVERY:standby实例正常关闭,控制文件写入的状态是这个状态。是由CreateRestartPoint修改该状态。
DB_SHUTDOWNING:非standby实例在关闭时,做checkpoint:CreateCheckPoint,开始做时修改为该状态,做完后修改为DB_SHUTDOWNED状态。
DB_IN_CRASH_RECOVERY:实例异常关闭,重启后,恢复时需要将实例先置为该状态
DB_IN_ARCHIVE_RECOVERY:standby实例重启后置为该状态。
DB_IN_PRODUCTION:非standby实例正常重启后就是这个状态,standby是DB_IN_ARCHIVE_RECOVERY

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。