• 10.基础备份与时间点恢复


    目录

    基础备份

    时间点恢复

    时间线


    基础备份与时间线都是为了时间点恢复。

    1. 基础备份

    基础备份的目的是备份当前的数据库集簇的快照,结合归档日志一起可以恢复至任意的时间点。

    1. 基础备份通过pg_start_backup命令开始为基础备份做准备,它会:
      1. 强制进行整页写入模式、
      2. 切换到当前的WAL段文件、
      3. 执行检查点,以便在制作基础备份的开始时刻显式创建一个重做点(那么后面就可以从该重做点开始,重放WAL归档日志,以恢复到该重做点之后的任意时间),该检查点的位置保存在非pg_control文件中。
      4. 新建backup_label文件,保存检查点位置、WAL开始位置(流复制用)、备份方法(如pg_start_backup)、备份来源(主/备库)、时间戳、开始时间线等。

    在恢复时,从backup_label文件中,获取检查点位置,在归档日志中读取检查点,从检查点中获取重做点,并从重做点开始重放日志。

    1. 使用任意归档命令获取数据库集簇的快照,可以备份到远程机器上。
    2. 执行pg_stop_backup命令完成备份,该命令执行以下步骤:
      1. 关闭整页写入模式
      2. 写入一条备份结束的XLOG记录
      3. 切换WAL段文件
      4. 创建一个备份历史记录文件,将backup_label的内容复制进来,并加上当前的时间戳,删除原来的backup_label文件。
    3. 时间点恢复

    pg启动时,如果数据库集簇中存在recovery.conf文件和backup_label文件时,进入恢复模式,与常规恢复模式的区别是:1.时间点恢复从archive_command中设置的归档目录中获取归档日志进行恢复;2.检查点位置从backup_label中获取。

    当重放的xlog日志中的时间戳超过目标时间戳时,则时间点恢复完成。并在pg_wal目录与归档目录下生成时间线历史文件。

    1. 时间线

    pg使用不同的时间线来区分原始数据库与恢复生成的数据库(就像word异常关闭,会生成多个版本的word让你选)。

    第九章中的WAL段文件名的前8位就是该WAL所属的时间线标识。

    时间线历史文件至少包含一行,该行包括:原时间线标识(本时间线标识体现在文件名上)、发生WAL段切换的LSN、恢复目标等。对于多次恢复,会生成多个时间线历史文件,尽管后面的文件包含了前面文件中的数据。

    在跨时间线进行恢复时,系统会依据不同的时间线历史文件,读取各条时间线上发生WAL段切换的LSN到恢复目标之间的合适的归档日志中读取XLOG并重放。如下:

  • 相关阅读:
    云原生中间件RocketMQ-生产者消息返回状态,延迟消息,自定义消息发送规则,netty框架部分代码分析
    Docker的使用
    北大图灵班学子斩获全球竞赛本科生第一名,攻关EDA“卡脖子”技术难题
    2022/9/20——IIC协议的练习(以温湿度传感器为例)
    团队协作中如何处理ConflictingBeanDefinitionException异常
    golang-bufio 缓冲写
    ExoPlayer架构详解与源码分析(2)——Player
    echarts问题总结2
    OpenAI首届开发者大会多项更新汇总
    Android反编译apk
  • 原文地址:https://blog.csdn.net/Michaelia_hu/article/details/127869428