注册
达梦数据库误操作,如何通过备份+归档文件方式恢复数据库
专栏/培训园地/ 文章详情 /

达梦数据库误操作,如何通过备份+归档文件方式恢复数据库

yu 2024/02/23 2114 0 0
摘要

测试环境声明

操作系统:麒麟3.2
cpu架构:X86
数据库版本:达梦8

场景一、本次测试内容为单机数据库误删除数据文件,如何恢复数据库的流程

一、创建测试环境

1、创建一个测试实例
image.png
服务器中已经有数据库了,所以要把端口改一下。
2、实例开启归档,备份需要数据库处于归档状态。
image.png
直接前台启动,设置下归档
image.png
3、创建表A1后备份,然后创建表A2
image.png
4、关掉数据库服务,删除SYSTEM、MAIN表空间文件
image.png

二、测试

1、启动测试
image.png
报错缺少SYSTEM.DBF数据文件。
2、直接还原测试
image.png
提示缺少SYSTEM.DBF数据文件。
3、重建数据库还原测试
image.png
这里参数改一下路径和端口就可以,因为创建的测试环境也没有设置参数,生产环境的初始化参数可以到数据文件路径下有个dminitxxxxxx.log文件查看初始化参数,然后进行再次还原测试
image.png
可以还原,但备份文件中只有表A1,没有表A2,接下来利用归档文件进行表A2的恢复。
image.png
更新魔数。
(UNTIL TIME '2024-02-18 18:20:09.772',这一串数字的来源。我没有特意的注意时间,我是通过log路径下的dmrman日志找到的,正常只需要输入2024-02-18 18:20:09就行。)
image.png

三、检查恢复情况。

启动新创建的实例,查看表情况。
image.png
表A1,A2都有,恢复成功!!!

场景二、数据表A1误操作,只恢复数据表A1,不影响其他数据表。

一、创建测试环境

前情提要表A1中有三条数据,表A2中无数据
image.png
备份一下,然后删除表A1中的数据,A2表开始插入数据。
image.png

二、进行数据还原

如果直接使用备份进行还原,会导致A2表中数据缺失,达梦数据库的联机备份是支持表备份,表还原的,但是一般情况生产环境不会针对某个表进行备份的。所以我们要还原的话需要创建一个新的数据库40,使用上一步的备份进行还原。
image.png
还原的40数据库A1表数据是全的,
把40数据库A1表中数据插回到数据库39:
用DTS把数据迁移过去。(这个环节方法很多,包括导出再导入等,不一一列举了)
image.png
在这个环节为了防止数据重复,点击转换,选择了删除后拷贝记录。(数据量较大的表酌情使用)
image.png
执行成功。

三、数据检查

表A2:
image.png
表A1:
image.png
数据还原完成。

场景三、利用主备集群中的备机归档恢复主机数据。

本场景模拟的是生产环境中,主机的归档误删且业务数据操作错误,需要还原的情景。

一、创建测试环境

image.png
在主机上,删除TEST表中ID=2的数据

二、利用备机的归档恢复主机。

image.png
这里的三个点:
1、USE DB_MAGIC:表示使用备机的归档文件进行还原。可以利用select DB_MAGIC语句到数据库中查看也可以通过SHOW BACKUPSET '/home/dmdba/+备份文件;查看备份库的DB_MAGIC。
2、UNTIL TIME:表示恢复到的时间节点。
3、因为是集群,所以只在主机上执行,会导致LSN不一致或者备机的LSN超过主机。所以这个还原操作要在主备机上都执行。

三、验证数据

image.png
TEST表中ID=2的数据恢复成功。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服