达梦数据库DM8的备份和恢复测试以及存在的问题小结

达梦数据库DM8的备份和恢复测试以及存在的问题小结

一、备份、恢复测试前的状态查看
数据库实例状态查看:
[[email protected] bin]$ ./disql sysdba/********

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

行号 INSTANCE_NAME STATUS$


1 DMSERVER OPEN
Dmap的运行状态查看:
[[email protected] bin]$ ./DmAPService status
DmAPService (pid 1126) is running.
[[email protected] bin]$
通过DM服务查看器查看状态:
[[email protected] tool]$ ./dmservice.sh达梦数据库DM8的备份和恢复测试以及存在的问题小结
二、备份测试过程及说明
运行console,登录DM控制台工具:
并选择“新建备份”进行备份操作:

达梦数据库DM8的备份和恢复测试以及存在的问题小结
竟然提示以下报错
达梦数据库DM8的备份和恢复测试以及存在的问题小结
查看数据库的归档配置情况:
SQL> select name,status$ , arch_mode from v$database;

行号 NAME STATUS$ ARCH_MODE


1 DAMENG 4 Y

已用时间: 8.923(毫秒). 执行号:5.
SQL>
确认已开启归档模式,说明达梦8的数据库即使在归档模式下进行备份,需要把该实例的进程关闭才可以进行备份操作,这个是很大的问题,因为正常生产环境下的数据库,如果需要在关闭数据库服务的情况下才能进行备份,会造成生产系统每次做备份操作,都需要把数据库服务关闭的情况才能备份,给生产系统的维护带来诸多的不便。
选择“归档备份”测试,仍然存在同样的问题:
达梦数据库DM8的备份和恢复测试以及存在的问题小结
尝试关闭数据库实例的服务进行测试,运行DmServiceDMSERVER stop
[[email protected] bak]$
[[email protected] 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
[[email protected] bak]$
[[email protected] bak]$ cd /dm8/bin/
[[email protected] bin]$ ./DmServiceDMSERVER stop
Stopping DmServiceDMSERVER: [ OK ]
[[email protected] bin]$
[[email protected] bin]$ ps -ef|grep dmserver|grep -v grep
[[email protected] bin]$
[[email protected] bin]$ netstat -ant|grep 5236
[[email protected] bin]$
关闭数据库实例的服务后,再进行备份测试

提示“备份目录冲突”的错误:
达梦数据库DM8的备份和恢复测试以及存在的问题小结
问题:提示“备份目录冲突”的报错,正常不应该,因为同一目录下,不同时间点的备份是很正常的情况,为了测试,我们在bak目录下创建一个文件夹。
[[email protected] bak]$ mkdir 20200727
[[email protected] bak]$ pwd
/dm8/bak
[[email protected] bak]$ cd 20200727
[[email protected] 20200727]$ pwd
/dm8/bak/20200727
[[email protected] 20200727]$ ls
[[email protected] 20200727]$
在新建增加的目录下进行备份测试:

提示以下错误:
达梦数据库DM8的备份和恢复测试以及存在的问题小结
说明DM8的数据库备份,需要dmap服务需要运行的状态,运行DmAPService start命令启动dmap服务:
[[email protected] bin]$ ls -l D*
-rwxr-xr-x 1 dmdba dinstall 12835 7月 27 01:41 DmAPService
-rwxr-xr-x 1 dmdba dinstall 13296 7月 27 01:41 DmAuditMonitorService
-rwxr-xr-x 1 dmdba dinstall 12472 7月 27 01:41 DmInstanceMonitorService
-rwxr-xr-x 1 dmdba dinstall 12943 7月 27 01:41 DmJobMonitorService
-rwxr-xr-x 1 dmdba dinstall 14760 7月 27 01:57 DmServiceDMSERVER
[[email protected] bin]$
[[email protected] bin]$ pwd
/dm8/bin
[[email protected] bin]$ ./DmAPService status
DmAPService is stopped
[[email protected] bin]$
[[email protected] bin]$ ./DmAPService start
Starting DmAPService: [ OK ]
[[email protected] bin]$
[[email protected] bin]$ ./DmAPService status
DmAPService (pid 6584) is running.
[[email protected] bin]$
达梦数据库DM8的备份和恢复测试以及存在的问题小结多次点击“刷新”选项,DmServiceDMSERVER服务之前手工关闭数据库实例,状态显示正常,但是DmAPService的状态就显示不正常了,因为DmAPService已通过手工启动服务,且查看运行状态为“DmAPService (pid 6584) is running”;
达梦数据库DM8的备份和恢复测试以及存在的问题小结
关闭DM服务查看器之后,重新运行dmservice.sh命令进入DM服务查看器,通过DM服务查看器查看到的DmAPService状态,仍然为停止状态,显然DM服务查看器当前显示的状态有问题,是否有BUG?继续进行数据库的备份测试;
备份终于成功:
达梦数据库DM8的备份和恢复测试以及存在的问题小结
备份成功的备份集查看:
[[email protected] bin]$ cd /dm8/bak/20200727/
[[email protected] 20200727]$ pwd
/dm8/bak/20200727
[[email protected] 20200727]$ ls -l
总用量 6536
-rw-r–r-- 1 dmdba dinstall 6608896 7月 27 18:41 20200727.bak
-rw-r–r-- 1 dmdba dinstall 78336 7月 27 18:41 20200727.meta
[[email protected] 20200727]$
在DM控制台工具的“指定搜索目录”输入刚刚备份的路径,并选择“获取备份”
三、数据库实例恢复测试及说明
测试前的数据文件查看及移到备份目录下,以便进行恢复测试:
[[email protected] DAMENG]$ ls -l *.DBF
-rw-r–r-- 1 dmdba dinstall 134217728 7月 27 11:20 DMHR.DBF
-rw-r–r-- 1 dmdba dinstall 134217728 7月 27 11:20 MAIN.DBF
-rw-r–r-- 1 dmdba dinstall 134217728 7月 27 18:34 ROLL.DBF
-rw-r–r-- 1 dmdba dinstall 24117248 7月 27 18:27 SYSTEM.DBF
-rw-r–r-- 1 dmdba dinstall 10485760 7月 27 18:02 TEMP.DBF
[[email protected] DAMENG]$ mkdir bak2
[[email protected] DAMENG]$ mv *.DBF ./bak2/
[[email protected] DAMENG]$ ls -l .DBF
ls: 无法访问
.DBF: 没有那个文件或目录
[[email protected] DAMENG]$
恢复前,确认数据库实例为关闭状态:
[[email protected] DAMENG]$ cd …/…/bin
[[email protected] bin]$ ./DmServiceDMSERVER status
DmServiceDMSERVER is stopped
[[email protected] bin]$
选择“还原”选项进行恢复:
对应的dmrman语句为:
RESTORE DATABASE ‘/dm8/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm8/bak/20200727’ DEVICE TYPE disk;
达梦数据库DM8的备份和恢复测试以及存在的问题小结提示“还原成功”
达梦数据库DM8的备份和恢复测试以及存在的问题小结还原成功后,尝试启动数据库实例:
[[email protected] 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.
[[email protected] bin]$
说明刚刚的“还原”选项,仅仅只是进行“restore database”的操作,而非将“restore database”和“recover database”的操作逐一进行操作,还需要单独对数据库实例进行recover database操作。

DM控制台工具继续选择“恢复”选项,继续进行recover database操作:
对应的dmrman语句为:
RECOVER DATABASE ‘/dm8/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm8/bak/20200727’ DEVICE TYPE disk;

选择“确定”进行恢复操作:

提示“恢复成功”

再次尝试启动数据库实例:
[[email protected] bin]$
[[email protected] 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.
[[email protected] bin]$
报错和之前一样的提示一样,说明还需要“recover database … update db_magic”操作
DM控制台工具继续选择“更新DB_Magic”选项,继续进行recover database … update db_magic操作:
对应的dmrman语句为:
RECOVER DATABASE ‘/dm8/data/DAMENG/dm.ini’ UPDATE DB_MAGIC;

提示“恢复成功”

再次尝试启动数据库实例,终于可以正常启动数据库实例。
[[email protected] bin]$ ./DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ OK ]
[[email protected] bin]$
[[email protected] bin]$ ./DmServiceDMSERVER status
DmServiceDMSERVER (pid 9706) is running.
[[email protected] bin]$
数据文件查看及数据库实例状态查看:
[[email protected] bin]$ ls -l /dm8/data/DAMENG/*.DBF
-rw-r–r-- 1 dmdba dinstall 134217728 7月 27 19:07 /dm8/data/DAMENG/DMHR.DBF
-rw-r–r-- 1 dmdba dinstall 134217728 7月 27 19:07 /dm8/data/DAMENG/MAIN.DBF
-rw-r–r-- 1 dmdba dinstall 134217728 7月 27 19:13 /dm8/data/DAMENG/ROLL.DBF
-rw-r–r-- 1 dmdba dinstall 24117248 7月 27 19:12 /dm8/data/DAMENG/SYSTEM.DBF
-rw-r–r-- 1 dmdba dinstall 10485760 7月 27 19:12 /dm8/data/DAMENG/TEMP.DBF
[[email protected] bin]$

[[email protected] bin]$ ./disql sysdba/******

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

行号 INSTANCE_NAME STATUS$


1 DMSERVER OPEN

已用时间: 10.143(毫秒). 执行号:4.
SQL>
四、测试小结:
1、存在的问题:
(1)、不管是备份还是恢复操作,DmAPService服务需要是running的状态,这一点可以理解,但是数据库实例需要在关闭的情况下,才能进行相关的备份操作,即使确认已开启归档模式,也是无法进行备份,这一点有点无法理解,因为正常生产环境下的数据库,如果需要在关闭数据库服务的情况下才能进行备份,会造成生产系统每次做备份操作,都需要把数据库服务关闭的情况才能备份,给生产系统的维护带来诸多的不便。
(2)、在同一个路径下备份,会提示“备份目录冲突”的报错,正常不应该,因为同一目录下,不同时间点的备份是很正常的现象,同样会给生产系统的维护带来诸多的不便。

2、DM服务查看器的状态显示是否存在BUG:
关闭DM服务查看器之后,重新运行dmservice.sh命令进入DM服务查看器,通过DM服务查看器查看到的DmAPService状态,仍然为停止状态,说明DM服务查看器当前显示的状态有问题,是否BUG?

3、DM控制台工具的恢复操作是否可以优化:
DM控制台工具中的恢复选项有“还原”、“恢复”、“更新DB_Magic ”的操作,在图形界面模式下,是否可以合并成单个选项,dmrman命令行模式有restore database、recover database或recover database… update db_magic的操作;