金仓数据库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还原后,如图的末尾三行应该删除

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值