iMC DBMAN备份恢复失败的经验汇总
一、 组网:
无。
二、问题描述:
iMC PLAT自带了数据库自动备份/恢复工具(DBMAN)为用户提供全面的系统灾备解决方案,通过DBMAN用户可以实现对iMC平台数据库(如config_db、monitor_db等)和组件数据库(如:UAM组件数据库ead)的自动备份与恢复处理。DBMAN采用了标准的SQL备份和恢复机制,它的数据处理对象是完整的数据库。用户只需根据不同的使用场景进行相应的配置及操作,便可通过DBMAN进行手动和自动两种方式的数据备份和恢复。正因为DBMAN对数据库自动备份恢复的智能性,安装部署的方便性,DBMAN解决方案得到了很大推广,目前90%以上局点都是采用DBMAN解决方案。但在使用过程中,经常出现DBMAN数据库备份或恢复失败的问题,而iMC的运行状态和DBMAN工具运行正常。
三、 过程分析:
DBMAN备份恢复失败的原因很多,根据经验将有可能碰到的情况进行如下说明。
iMC安装目录/dbman/log/dbman_debug.log日志文件记录了数据库备份、恢复的完整过程,在数据库备份恢复失败时可以参考该日志文件进行定位。为了方便阅读,将问题原因和解决方案一并列出,如下:
1、 主备iMC服务器备份或恢复路径有中文字符问题
问题现象:数据库备份,恢复失败。
问题分析:查看dbman_debug日志,有如下error信息: 04:00:49 [ERROR] [int TimeBackup()] Open the databse file error. File=D:\imc安装文件\backup\db_catalog_20130905_040002.dat.
问题原因:备份、恢复路径不能存在中文字符。
解决方案:修改备份、恢复路径为英文字符方可。
2、 版本不一致问题
问题现象:数据库备份成功,恢复失败。
问题分析:查看dbman_debug日志,有如下error信息:
公元17年 16:42:13 [ERROR] [checkDBFile()] File prefix invalid: vnm_db_imc_vnm, please confirm whether the DB user are same one on main server and standby server. If not, please use the command dbman -help to get more information.
问题原因:DBMAN要求版本必须一致。
解决方案:安装或卸载对应iMC组件,确保其版本一致方可。
3、数据库用户dba到imc问题
问题现象:数据库备份成功,恢复失败。
问题分析:查看dbman_debug日志,有如下error信息:
公元17年 16:42:13 [ERROR] [checkDBFile()] File prefix invalid: config_db_dba_db_20101126_220012_full.db
, please confirm whether the DB user are same one on main server and standby server. If not, please use the command dbman -help to get more information.
对于从早期版本(例如Plat R2602及其之前版本)升级上来的iMC,部分数据库使用dba用户,使用dbman进行备份,将dba用户对应的数据库文件作为原始文件,试图恢复到目标数据库Plat R2606及以上版本时,会提示恢复失败。主要问题原因为Plat R2606及之后的版本的这些数据库不再使用dba用户,而是使用imc用户。
问题原因:数据库用户不同不能恢复。
解决方案:
1) 使用dbatool工具恢复
a.将工具dbatool.exe拷贝到“iMC\dbman\bin”目录下;
b.停止iMC;
c.通过执行命令行dbatool -dba2imc ‘Backup File Location + Backup filename’,来逐一手工恢复dba数据库文件到目标数据库,以恢复config数据库为例,恢复成功提示如下:
d.对于非dba用户对应的数据库文件(UAM/EAD/CAMS数据库除外),也可以使用该工具进行恢复。
2)备机也从R2606之前的版本开始安装以确保数据库用户名一致。
4、数据库无法登陆问题
问题现象:数据库无法恢复。
问题分析:查看dbman_debug日志,有如下error信息:
公元17年 10:57:37 [ERROR] [int CDbBase::ExecSql()] Exec command fail:USE master RESTORE DATABASE aclm_db
from DISK = 'E:\IMC_restore\aclm_db_imc_aclm_db_20131101_104503_full.db'
with REPLACE
公元17年 10:57:37 [DEBUG] [int CDbBase::ExecSql()] Exec sql log:[SQL Server Native Client 10.0]TCP 提供程序: 超时错误 [258].
[SQL Server Native Client 10.0]登录超时已过期
[SQL Server Native Client 10.0]用于登录响应中的延迟,无法完成登录过程
数据库用户登录异常导致数据库恢复失败。
问题原因:相应数据库登陆失败。
解决方案:解决对应用户正常登录数据库问题即可。
5、数据库之间文件簇问题
问题现象:数据库恢复失败。
问题分析:查看dbman_debug日志,有如下error信息:
公元17年 15:06:29 [DEBUG] [int CDbBase::ExecSql()] Exec sql log:消息 3241,级别 16,状态 7,服务器 WIN-7NNV0POC4PU,第 1 行
设备'D:\iMC5.2\imcbak0113\5.2.E0402P07-ead_ead_db_20140113_104610_full.db'
上的媒体簇的结构不正确。SQL Server 无法处理此媒体簇。
消息 3013,级别 16,状态 1,服务器 WIN-7NNV0POC4PU,第 1 行
RESTORE DATABASE 正在异常终止。
问题原因:数据库本身低版本可以向高版本兼容,但高版本向下不兼容,即SQL Server 2005备份的数据库可以在SQL Server 2008版本恢复,但SQL Server 2008备份的数据库不支持在SQL Server 2005版本恢复。
解决方案:安装相同SQL Server版本进行数据库恢复。
6、dbman\etc\ 文件夹下,增加了以“.skip”为后缀名的文件
问题现象:Dbman运行正常,但部分数据库未备份。
问题分析:iMC中某些组件的数据量很大(如NTA),在配置Dbman时,无需对它进行备份和恢复。处理方法如下:
在dbman\etc\ 文件夹下,增加以“.skip”为后缀名的文件(如 nta.skip),文件内容如下:
dbName=nta_db (用于SQL Server)
dbUserName=imc_nta(用于Oracle)
Dbman配置程序会自动读取该文件,进行过滤。上述配置文件中提及的数据库,将不再进行备份。
问题原因:增加了skip文件。
解决方案:取消以“.skip”为后缀名的文件。
四、 解决方法:
具体见过程分析章节中的解决方案。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作