恢复|DM8数据库基于时间点的恢复
在生产环境中 , 当我们误操作删除了重要数据时 , 可以使用闪回查询来找回原来的数据 , 但当表被删除或者数据库没有开启闪回功能时 , 则无法使用闪回来获取原有的表数据;此时我们可以使用基于归档日志的时间点的恢复(不完全恢复)来达到恢复数据或恢复表的目的 。
本章介绍DM8数据库如何使用归档日志文件将数据库恢复到指定时间点的状态 。
本章内容已在如下环境上测试:
操作系统:中标麒麟7;
数据库版本:达梦8;
相关关键字:DM还原恢复 , WITH ARCHIVEDIR ,UNTIL TIME , 基于时间点的恢复
基于时间点的恢复
01
备份数据库
数据库故障还原的前提是要有备份文件 , 这里创建一个原始的数据库备份文件 , 可以使用DMRMAN脱机备份文件 , 也可以是联机备份文件 。 这里以联机备份为例(在联机备份之前 , 需要保证数据库已开启并配置归档) 。 使用SYSDBA用户登录数据库 , 执行如下语句备份数据库:
SQL> backup database full backupset "DMTESTFULL_ONLINE0723"
本文插图
02
制造数据 , 生成归档日志
创建test用户 , 并在test用户下创建表t_table并插入数据 , 此过程生成归档日志 。
SQL> create user test IDENTIFIED by dameng123 DEFAULT TABLESPACE mainSQL> create table test.t_table as select * from SYSOBJECTS
本文插图
03
模拟故障 , 删除表
模拟故障 , 删除test用户下表t_table 。 并记录下删除表时的系统时间 。
本文插图
04
使用备份和归档日志将
数据库恢复到指定时间点
t_table表被删除 , 要想找回此表的数据 , 只能将数据库恢复到表删除的前一刻 。 恢复步骤参考如下:
使用备份文件还原数据库
执行如下命令停止数据库:
[dmdba@localhost bin]$ DmServiceDMTESTSERVER stop
【恢复|DM8数据库基于时间点的恢复】使用步骤1的备份文件将数据库还原到备份时状态:
RMAN> restore database "/dm8/data/DMTEST/dm.ini" from backupset "DMTESTFULL_ONLINE0723"
本文插图
使用归档日志将数据库恢复到指定时间点
执行如下命令 , 指定with archivedir参数使用归档恢复 , 并指定until time参数将数据库还原到删除表之前的时间 , 由步骤3得知 , 我们大概在2020-07-23 10:48:53之前的时间删除了表数据 , 这里将数据库恢复到2020-07-23 10:48:40的时间(时间越精确越好 , 无法精确的情况下预估) 。
RMAN> recover database "/dm8/data/DMTEST/dm.ini" with archivedir "/dm8/data/DMTEST/arch" until time "2020-07-23 10:48:40"
从下面的截图可以看出 , 归档的恢复并不是100%(因为是不完全恢复 , 并没有完全重做所有归档日志) , 只是恢复到93% 。
本文插图
更新数据库魔数
执行如下命令更新数据库魔数db_magic信息 。
RMAN> recover database "/dm8/data/DMTEST/dm.ini" update db_magic
此时 , 数据库恢复完成 。
执行DmServiceDMTESTSERVER start启动数据库 , 连接数据库查询test用户下t_table表数据 , 可以看到t_test表已恢复 。
推荐阅读
- 新机发布|搭载酷睿i7,三星全新笔记本在3DMARK 数据库中曝光
- 手机使用技巧|手机太卡顿,直接恢复出厂设置会成“新机”吗?网友:咋不早说
- 卫星|继7月任务失败后 Rocket Lab将于8月27日恢复发射
- |面试官:这个MySql语法都没掌握,你简历怎么写精通数据库呢
- 数据库|东方国信新一代分布式分析型数据库CirroData发布
- 中年|恢复供电他们时刻不停歇,有人光脚踩泥、有人连续奋战18小时……
- 行业互联网|东方国信新一代分布式分析型数据库CirroData发布
- 数字化|商家数量同比增长30% 饿了么折射城市消费信心恢复
- 业务|美团疫后复苏:Q2扭亏为盈,外卖已恢复,酒旅及新业务有机遇
- 数据|阿里云宣布启动“升舱计划” 助力企业全面升级至原生数据库