Postgresql日志系统的实现(八)

1.3.3针对各类故障进行恢复的流程

1.3.3.1事务故障

PG中使用多版本并发存储数据,所以发生事务故障时,不需要进行恢复,DBMS只读取有效数据,数据库仍处于一致状态。

1.3.3.2系统故障和介质故障的恢复

系统故障和介质故障调用的是同一个函数入口:startupxlog(),可以在reference图中找到上下调用关系:

StartupXLOG
    InitPostgres
    StartupProcessMain
        AuxiliaryProcessMain
            main
            SubPostmasterMain
                main


调用startupxlog()进行系统和介质故障恢复的流程:

1.首先,读控制文件,得知系统状态。

系统状态分为几种情况:

    DB_STARTUP                  //系统启动中

    DB_SHUTDOWNED               //系统正常关闭

    DB_SHUTDOWNING              //系统正在关闭,通常用于“CreateCheckPoint”开始处,先把系统状态置为“DB_SHUTDOWNING”,然后执行创建checkpoint的操作,到结束创建checkpoint的尾部,再把系统状态置为“DB_SHUTDOWNED

    DB_IN_CRASH_RECOVERY        //系统在恢复状态时发生过“crash”,需要从上一次备份中恢复被毁坏的数据

    DB_IN_ARCHIVE_RECOVERY      //系统在归档状态时发生过“crash”,需要从更早的备份中恢复数据

    DB_IN_PRODUCTION            //系统恢复完毕,置系统状态为运行处理事务

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值