一、背景
在数据库运维的过程中,很容易出现数据文件或者重要数据被删的情况,这时候就需要使用备份以及归档日志来进行回退到被删除的时间点之前了。备份是DBA人员的生命线,任何高危操作之前都得做一个备份,以做一个容灾,以及操作失败的一个回退的保障。
此次分享为在项目中因当地人员误删除数据文件,导致需要将数据库还原至删除数据文件前的时间点,因此需要精准的跟当地运维人员确认删除时间点,以保证数据的完整性。
二、模拟环境
1)数据库在开启归档以及定时备份的作业,每周六进行全备作业,剩余时间每天进行基于全备的作业增量备份操作
2)磁盘空间充足
3)数据库表空间文件XXX.DBF被删
三、实操
1)先确认数据文件是否以及被删除
2)确认数据库进程情况
ps -ef |grep dmserver
3)如果数据库还在运行中的话,进入安装目录bin下通过DmS服务名开头的服务名进行停止操作
4)确认备份是否存在
FULL命名为全备 INCREMENT为增备
5)cp -r 从全备开始到前一天的文件夹全部拷贝到bak_0708目录下,单独使用一个文件夹存放
6)确认归档文件情况是否在恢复的时间点内
7)进行数据库还原
cd /home/dmdba/dmdbms/bin
./dmrman
分别执行:
第一句
restore database ‘dm.ini文件的绝对路径’ from backupset ‘/dmdata/dmbak/bak_0708/DB_INCREMENT_2022_07_07_00_08_52’ (新建的目录中最后一天的增备) with backupdir ‘/dmdata/dmbak/bak_0708/DB_FULL_2022_07_02_00_06_52’ (新建的目录中最后上一次的全备) ;
第二句:
recover database ‘dm.ini文件的绝对路径’ with archivedir ‘/dmdata/dmarch’ until time ‘2022-07-08 8:00’ (故障的前一个小时);
第三句:
recover database ‘dm.ini文件的绝对路径’ update db_magic (达梦8才需更新魔术)
8)执行完成之后前台启动看见SYSTEM IS READY后后台启动数据库服务
9)测试数据库是否可以连接
10)测试应用连接
三、总结
由此可见备份和归档对于数据库的重要性,建议在空间足够的情况下至少保留一天的归档量,以及每天备份的策略,保证数据的安全性。
希望大家不会有需要到这篇文章的时候。
文章
阅读量
获赞