DM8数据库备份与恢复

373 阅读3分钟

&nbsp&nbsp&nbsp&nbsp首先总结一下这段时间DM8数据库的学习,总体感觉还是很不错的,知识点也基本都掌握了,但sql复杂业务还是一知半解,还需要多练习才能熟练呐。
&nbsp&nbsp&nbsp&nbsp数据库的备份和恢复在实际生产中可以说是相当重要的,话不多说,开始今天主题达梦数据库的备份和恢复!

一、备份、恢复测试前的状态查看

数据库实例状态查看:

dmdba@localhost bin]$ ./disql sysdba/********

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 11.287(毫秒)
disql V8
SQL> select instance_name,statusfromv from vinstance;

行号 INSTANCE_NAME STATUS$

1 DMSERVER OPEN
Dmap的运行状态查看:
[dmdba@localhost bin]$ ./DmAPService status
DmAPService (pid 1126) is running.
[dmdba@localhost bin]$
通过DM服务查看器查看状态:
[dmdba@localhost tool]$ ./dmservice.sh

二、备份测试过程及说明

运行console,登录DM控制台工具, 并选择“新建备份”进行备份操作:

竟然提示以下报错

查看数据库的归档配置情况:

SQL> select name,status$ , arch_mode from v$database;

行号 NAME STATUS$ ARCH_MODE
1 DAMENG 4 Y

已用时间: 8.923(毫秒). 执行号:5.
SQL>

确认已开启归档模式,说明DM8的数据库即使在归档模式下进行备份,需要把该实例的进程关闭才可以进行备份操作,这个是很大的问题,因为正常生产环境下的数据库,如果需要在关闭数据库服务的情况下才能进行备份,会造成生产系统每次做备份操作,都需要把数据库服务关闭的情况才能备份,给生产系统的维护带来诸多的不便。

选择“归档备份”测试,仍然存在同样的问题

尝试关闭数据库实例的服务进行测试,运行DmServiceDMSERVER stop

[dmdba@localhost bak]$
[dmdba@localhost bak]$ ps -ef|grep dmserver|grep -v grep
dmdba 1129 1 0 18:02 ? 00:00:10 /dm8/bin/dmserver /dm8/data/DAMENG/dm.ini -noconsole
[dmdba@localhost bak]$
[dmdba@localhost bak]$ cd /dm8/bin/
[dmdba@localhost bin]$ ./DmServiceDMSERVER stop
Stopping DmServiceDMSERVER: [ OK ]
[dmdba@localhost bin]$
[dmdba@localhost bin]$ ps -ef|grep dmserver|grep -v grep
[dmdba@localhost bin]$
[dmdba@localhost bin]$ netstat -ant|grep 5236
[dmdba@localhost bin]$

关闭数据库实例的服务后,再进行备份测试

提示“备份目录冲突”的错误

问题:提示“备份目录冲突”的报错,正常不应该,因为同一目录下,不同时间点的备份是很正常的情况,为了测试,我们在bak目录下创建一个文件夹

[dmdba@localhost bak]$ mkdir 20200823
[dmdba@localhost bak]$ pwd
/dm8/bak
[dmdba@localhost bak]$ cd 20200823
[dmdba@localhost 20200823]$ pwd
/dm8/bak/20200823
[dmdba@localhost 20200823]$ ls
[dmdba@localhost 20200823]$

在新建增加的目录下进行备份测试:

提示以下错误:

说明DM8的数据库备份,需要dmap服务需要运行的状态,运行DmAPService start命令启动dmap服务:

备注:为了验证数据库的备份和恢复是否需要dmap服务,之前故意通过命令行DmAPService stop手工关闭dmap服务;
[dmdba@localhost bin]$ ls -l D*
-rwxr-xr-x 1 dmdba dinstall 12835 823 19:41 DmAPService
-rwxr-xr-x 1 dmdba dinstall 13296 823 19:41 DmAuditMonitorService
-rwxr-xr-x 1 dmdba dinstall 12472 823 19:41 DmInstanceMonitorService
-rwxr-xr-x 1 dmdba dinstall 12943 823 19:41 DmJobMonitorService
-rwxr-xr-x 1 dmdba dinstall 14760 823 19:57 DmServiceDMSERVER
[dmdba@localhost bin]$
[dmdba@localhost bin]$ pwd
/dm8/bin
[dmdba@localhost bin]$ ./DmAPService status
DmAPService is stopped
[dmdba@localhost bin]$
[dmdba@localhost bin]$ ./DmAPService start
Starting DmAPService: [ OK ]
[dmdba@localhost bin]$

多次点击“刷新”选项,DmServiceDMSERVER服务之前手工关闭数据库实例,状态显示正常,但是DmAPService的状态就显示不正常了,因为DmAPService已通过手工启动服务,且查看运行状态为DmAPService (pid 6584) is running”;

[dmdba@localhost bin]$ ./DmAPService status
DmAPService (pid 6584) is running.
[dmdba@localhost bin]$

关闭DM服务查看器之后,重新运行dmservice.sh命令进入DM服务查看器,通过DM服务查看器查看到的DmAPService状态,仍然为停止状态,显然DM服务查看器当前显示的状态有问题,是否有BUG?继续进行数据库的备份测试;

备份终于成功:

备份成功的备份集查看:

[dmdba@localhost bin]$ cd /dm8/bak/20200727/
[dmdba@localhost 20200823]$ pwd
/dm8/bak/20200823
[dmdba@localhost 20200823]$ ls -l
总用量 6536
-rw-r–r-- 1 dmdba dinstall 6608896 823 18:41 20200823.bak
-rw-r–r-- 1 dmdba dinstall 78336 823 18:41 20200823.meta
[dmdba@localhost 20200823]$

在DM控制台工具的“指定搜索目录”输入刚刚备份的路径,并选择“获取备份”

三、数据库实例恢复测试及说明

测试前的数据文件查看及移到备份目录下,以便进行恢复测试:

[dmdba@localhost DAMENG]$ ls -l *.DBF
-rw-r–r-- 1 dmdba dinstall 134217728 823 11:20 DMHR.DBF
-rw-r–r-- 1 dmdba dinstall 134217728 823 11:20 MAIN.DBF
-rw-r–r-- 1 dmdba dinstall 134217728 823 18:34 ROLL.DBF
-rw-r–r-- 1 dmdba dinstall 24117248 823 18:27 SYSTEM.DBF
-rw-r–r-- 1 dmdba dinstall 10485760 823 18:02 TEMP.DBF
[dmdba@localhost DAMENG]$ mkdir bak2
[dmdba@localhost DAMENG]$ mv *.DBF ./bak2/
[dmdba@localhost DAMENG]$ ls -l .DBF
ls: 无法访问.DBF: 没有那个文件或目录
[dmdba@localhost DAMENG]$
恢复前,确认数据库实例为关闭状态:
[dmdba@localhost DAMENG]$ cd …/…/bin
[dmdba@localhost bin]$ ./DmServiceDMSERVER status
DmServiceDMSERVER is stopped
[dmdba@localhost bin]$

选择“还原”选项进行恢复:
对应的dmrman语句为: RESTORE DATABASE ‘/dm8/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm8/bak/20200823’ DEVICE TYPE disk;

提示“还原成功”

还原成功后,尝试启动数据库实例:

[dmdba@localhost bin]$ ./DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ FAILED ]
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-78-20.04.28-121039-ENT startup…
Database mode = 0, oguid = 0
License will expire on 2021-04-28
Instance DMSERVER startup failed, execute ‘recover database … update db_magic’ in dmrman.
[dmdba@localhost bin]$