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

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

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

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

行号 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达梦数据库DM8的备份和恢复测试以及存在的问题小结_第1张图片
二、备份测试过程及说明
运行console,登录DM控制台工具:
并选择“新建备份”进行备份操作:

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

行号 NAME STATUS$ ARCH_MODE


1 DAMENG 4 Y

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

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

提示以下错误:
达梦数据库DM8的备份和恢复测试以及存在的问题小结_第6张图片
说明DM8的数据库备份,需要dmap服务需要运行的状态,运行DmAPService start命令启动dmap服务:
备注:为了验证数据库的备份和恢复是否需要dmap服务,之前故意通过命令行DmAPService stop手工关闭dmap服务;
[dmdba@localhost 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
[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]$

达梦数据库DM8的备份和恢复测试以及存在的问题小结_第7张图片
多次点击“刷新”选项,DmServiceDMSERVER服务之前手工关闭数据库实例,状态显示正常,但是DmAPService的状态就显示不正常了,因为DmAPService已通过手工启动服务,且查看运行状态为“DmAPService (pid 6584) is running”;
[dmdba@localhost bin]$ ./DmAPService status
DmAPService (pid 6584) is running.
[dmdba@localhost bin]$
达梦数据库DM8的备份和恢复测试以及存在的问题小结_第8张图片
关闭DM服务查看器之后,重新运行dmservice.sh命令进入DM服务查看器,通过DM服务查看器查看到的DmAPService状态,仍然为停止状态,显然DM服务查看器当前显示的状态有问题,是否有BUG?继续进行数据库的备份测试;
备份终于成功:
达梦数据库DM8的备份和恢复测试以及存在的问题小结_第9张图片
备份成功的备份集查看:
[dmdba@localhost bin]$ cd /dm8/bak/20200727/
[dmdba@localhost 20200727]$ pwd
/dm8/bak/20200727
[dmdba@localhost 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
[dmdba@localhost 20200727]$
在DM控制台工具的“指定搜索目录”输入刚刚备份的路径,并选择“获取备份”
三、数据库实例恢复测试及说明
测试前的数据文件查看及移到备份目录下,以便进行恢复测试:
[dmdba@localhost 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
[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/20200727’ DEVICE TYPE disk;
达梦数据库DM8的备份和恢复测试以及存在的问题小结_第10张图片提示“还原成功”
达梦数据库DM8的备份和恢复测试以及存在的问题小结_第11张图片
还原成功后,尝试启动数据库实例:
[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]$
说明刚刚的“还原”选项,仅仅只是进行“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;

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

提示“恢复成功”

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

提示“恢复成功”

再次尝试启动数据库实例,终于可以正常启动数据库实例。
[dmdba@localhost bin]$ ./DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ OK ]
[dmdba@localhost bin]$
[dmdba@localhost bin]$ ./DmServiceDMSERVER status
DmServiceDMSERVER (pid 9706) is running.
[dmdba@localhost bin]$
数据文件查看及数据库实例状态查看:
[dmdba@localhost 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
[dmdba@localhost bin]$

[dmdba@localhost 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的状态,这一点可以理解,但是数据库实例需要在关闭的情况下,才能进行相关的备份操作,即使确认已开启归档模式,也是无法进行备份,这一点有点无法理解,因为正常生产环境下的数据库,如果需要在关闭数据库服务的情况下才能进行备份,会造成生产系统每次做备份操作,都需要把数据库服务关闭的情况才能备份,给生产系统的维护带来诸多的不便(虽然在“控制台工具可以在线进行备份”,dmrman的备份建议也应该可以在线备份,毕竟归档已经启用的情况下,dmrman实现在线备份,应该是比较合理)。
(2)、在同一个路径下备份,会提示“备份目录冲突”的报错,正常不应该,因为同一目录下,不同时间点的备份是很正常的现象,同样会给生产系统的维护带来诸多的不便。

2、DM服务查看器的状态显示是否存在问题,还是偶然的现象?
DmAPService status命令行查看dmap服务为running状态,在DM服务查看器图形界面多次选择“刷新”之后,DM服务查看器查看到的DmAPService状态一直为“停止”状态,重新运行dmservice.sh命令进入DM服务查看器,通过DM服务查看器查看到的DmAPService状态,仍然为停止状态,说明DM服务查看器当前显示的状态有问题,是否存在问题,还是偶然的现象?

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

你可能感兴趣的:(数据库)