• 金仓数据库KingbaseES备份与恢复工具手册(还原与恢复)


    物理还原即使用sys_rman将当时做备份的物理文件恢复回来,但由于物理备份时,数据库还是会有不断的数据写入,因此拷贝过程中,物理文件可能已经发生了变化。数据库在物理还原(以下简称还原)结束后,还要进行数据库自己的恢复(以下简称恢复)过程,才能最终达成数据库一致性状态,对外提供服务。

    因此,真正恢复数据库到用户所用状态,分为了还原和恢复两个部分。

    注意

    还原和恢复完成之后,应该尽快进行一次全量备份。

    目录

    6.1. 还原 ¶

    6.1.1. 测试性质的还原 ¶

    6.1.2. 基于最新备份的还原 ¶

    6.1.3. 指定备份集还原 ¶

    6.1.4. 指定事务ID还原 ¶

    6.1.5. 指定时间点还原 ¶

    6.1.6. 表空间支持 ¶

    6.1.7. 还原后节点处理 ¶

    6.2. 恢复 ¶

    6.2.1. PITR的恢复策略 ¶

    6.2.2. 集群还原恢复策略 ¶


    6.1. 还原 

    还原操作说明:

    • 还原动作,只能在数据库节点上进行。

    • 还原完成后,数据库启动后,请及时手动清除kingbase.auto.conf文件中还原过程写入的相关还原参数。

    • 若是集群环境,还原后的数据库节点将成为集群的新主节点,利用该节点重做备库,参考《KingbaseES主备和读写分离集群使用手册》;集群完整启动后,可选择新的主节点。

    • 还原时,需要确保kingbase进程已经停止。

    • 还原时,KB_DATA目录下如果还有文件存在,需要--delta选项进行选择性还原。

    • 还原时,KB_DATA目录下如果没有文件存在,以下的还原方式均可使用。

    还原命令格式:

    /home/kingbase/cluster/project/cluster/kingbase/bin/sys_rman
      --config=<配置文件>
      --stanza=<名称>
      --<还原选项>
      restore
    

    6.1.1. 测试性质的还原 

    还原恢复之后,新产生的WAL文件会继续归档到REPO存储目录中,将改变原有的备份集。

    进行测试性质的还原:指定新的DATA目录和临时禁止归档WAL文件

    /home/kingbase/cluster/project/cluster/kingbase/bin/sys_rman
     --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --kb1-path=/new_path/data --archive-mode=off restore
    

    6.1.2. 基于最新备份的还原 

    默认还原,将最新的备份集还原到数据库实例的data目录下。

    /home/kingbase/cluster/project/cluster/kingbase/bin/sys_rman
     --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase restore
    

    6.1.3. 指定备份集还原 

    不指定时间,工具将隐式地指定时间为备份集结束时间的后一秒。

    /home/kingbase/cluster/project/cluster/kingbase/bin/sys_rman
    --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --set='20200519-031336F' restore
    

    指定时间,工具将验证指定时间是否晚于备份集结束时间;如否,报错退出。

    /home/kingbase/cluster/project/cluster/kingbase/bin/sys_rman
    --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase
    --set='20200519-031336F' --type=time --target='2020-05-19 16:28:17' restore
    

    备份节点名的查看,请参考 附录B:sys_rman.conf配置说明 ;--delta选项可选,用于KB_DATA目录存在文件时;

    6.1.4. 指定事务ID还原 

    使用指定的xid还原到特定状态,必须同时指定该xid之前的备份集,才能够恢复到该xid。

    /home/kingbase/cluster/project/cluster/kingbase/bin/sys_rman
    --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase
    --type=xid --target='445566' --set='20210611-011416F_20210611-023050I' restore
    

    --delta选项可选,用于KB_DATA目录存在文件时

    --target-exclusive选项可选,用于表示是否排除等于指定xid的内容。

    注意

    如果出现如下提示,说明当前的选项有误。

    ERROR: [032]: Current options maybe restore to newest data from
    archive WAL files
    Please specify --type=xid --target='xx'
    --set='2021xxxx-xxxxxxX_2021xxxx-xxxxxxX' or follow the user guide
    Stop current restore.
    

    6.1.5. 指定时间点还原 

    /home/kingbase/cluster/project/cluster/kingbase/bin/sys_rman
    --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --type=time --target='2020-05-07 16:28:17' restore
    

    使用指定的时间点还原到特定状态

    --delta选项可选,用于KB_DATA目录存在文件时

    --target-exclusive选项可选,用于表示是否排除等于指定时间的内容。

    --target-action=pause 默认选项,恢复完成后,数据库启动后进入只读状态

    --target-action=promote 恢复完成后,switch timeline,数据库启动后进入读写状态

    --target-action=shutdown 恢复完成后,关闭数据库

    6.1.6. 表空间支持 

    备份时,表空间是默认地、隐式地包含在备份文件集中。

    还原时,工具默认把KB_DATA/sys_tblspc/ 的软连接指向原有的自定义表空间文件夹(创建表空间时指定的location),

    --link-all 选项可选,如果设置,将软连接指向新的自定义表空间文件夹。

    注意

    程序在选择创建自定义表空间之前的备份集,还原到创建自定义表空间后的时间点,程序不会自动创建自定义的表空间目录。

    建议在还原操作执行之前,手动创建自定义表空间目录。

    此外,支持:

    1. 表空间映射,在恢复时,对单个表空间进行重定向

    例如:--tablespace-map=ts_01=/db/ts_01

    注意

    此配置非常危险,除非管理员明确原因及后果方可执行。

    1. 所有表空间映射,在恢复时,对所有表空间进行重定向,这样非常便于开发以及遇到存储故障时的处理。

    例如:--tablespace-map-all=/data/tablespace

    注意

    此配置非常危险,除非管理员明确原因及后果方可执行。

    6.1.7. 还原后节点处理 

    在kingbase的主配置hot_standby=on的情况下,此选项有效。

    --target-action=pause 默认选项,恢复完成后,数据库启动后进入只读状态

    --target-action=promote 恢复完成后,switch timeline,数据库启动后进入读写状态

    --target-action=shutdown 恢复完成后,关闭数据库

    根据物理备份还原的理念,还原后,数据库用户的密码同时还原到指定备份集或时间点的状态。

    如果需要,请使用超级管理员去重置相关的数据库用户的密码。

    6.2. 恢复 

    数据恢复过程,指的是经过还原动作后,新的数据库实例拥有了基本的数据文件,第一次启动数据库时,数据库根据恢复配置文件去拉取归档的WAL日志,进行REDO的过程。

    恢复配置文件位于/kingbase.auto.conf,涉及恢复的部分主要包含以下配置项:

    • restore_command

      配置为sys_rman工具archive-get命令,负责拉取归档的WAL日志,拉取的范围由后续参数确定。

      如果没有recover_target_*相关选项,将自动拉取所有的归档WAL文件并执行REDO动作,将数据还原到最新的状态。

    • recovery_target_time

      还原使用PITR功能--type=time时,填充相关值。

    • recovery_target_xid

      还原使用PITR功能--type=xid时,填充相关值。

    • recovery_target_timeline

      还原使用功能--target-timeline时,填充相关值。

    • recovery_target_action

      还原使用功能--target-action时,填充相关值。

    6.2.1. PITR的恢复策略 

    注意

    指定备份集、指定事务ID、指定时间点均属于PITR方式,上述方式还原后,需要谨慎地进行恢复。

    PITR还原后,默认恢复方式为pause,启动数据库后只能执行只读操作以检查是否符合恢复预期,若符合恢复预期请执行select sys_wal_replay_resume(),之后数据库进入读写状态;若不符合恢复预期,请关闭并删除该数据库,重新做还原。

    当仅用来测试数据是否恢复到某个想要的恢复点时,无须执行select sys_wal_replay_resume(),执行实际数据查询即可;但需要注意,数据库开始接受只读查询并不表示已经恢复到指定状态,需执行select sys_is_wal_replay_paused()来判断,如果是true表明数据库已经恢复完成。

    当恢复完成的数据库实例需要继续投入生产时,执行select sys_wal_replay_resume(),数据库进入读写状态。

    例外的情况,当PITR指定的时间超过了所有备份集的时间覆盖范围,则数据库REDO过程中始终无法找到想要停止的点,直到拉取了所有的归档WAL日志;此时,数据库自动跳过REDO模式,进入读写状态,在此场景下无须执行select sys_wal_replay_resume()。

    注意

    在PITR操作中,如果设置的恢复时间点刚好处于不支持回滚的DDL语句(例如DROP DATABASE)的时间戳之前,则会出现一些异常情况,详情请参阅《KingbaseES物理备份恢复最佳实践》

    6.2.2. 集群还原恢复策略 

    如果集群中一个节点出现严重问题时,应该采用repmgr工具的clone功能恢复集群;

    新节点上线后,使用repmgr工具接入集群中。

    如果集群所有节点都出现严重问题时,采用工具sys_rman进行还原:

    1. 选择一个数据库节点,使用还原功能;

    2. 在新的主节点上,启动数据库

    3. 如果还原时使用了PITR功能(含指定备份集或指定时间等),在clone之前,删除刚刚还原的主节点的/kingbase.auto.conf文件中的recovery_*配置参数,包含restore_command,recovery_target,recovery_target_action等

    4. 使用repmgr工具在备库节点clone并register到主节点;

    5. 整个集群恢复正常工作状态。

    kingbase.auto.conf配置文件示例,PITR还原后,如图的末尾三行应该删除

     

  • 相关阅读:
    深度学习+opencv+python实现车道线检测 - 自动驾驶 计算机竞赛
    冒泡排序(Bubble Sort)
    Book2Notion:将豆瓣图书信息同步到Notion的Chrome插件
    python基础05——字典:dict及集合:set,看这篇文章就够了
    影刀Rpa 、英佑科技面试总结
    区间素数 马蹄集
    【强化学习】05 —— 基于无模型的强化学习(Prediction)
    精准诊断,精确治疗,智芯传感ZXPA侵入式压力传感器为心血管疾病患者带来福音
    【mysql索引实现原理】
    【20221206】【每日一题】01背包的基础
  • 原文地址:https://blog.csdn.net/arthemis_14/article/details/127426988