黄蓉参悟iMC数据库转存恢复大法
概述:
上回说到郭靖穿越到2013年间,并奇遇各位大师,掌握各种业软大法之精髓,猛然成为一名高级客户经理,十分得意。事不知,好景不长,短短一年间,却惹诸多重大问题,几多核心门派iMC数据库无故丢失,损失极大。引来诸路门派问责。郭靖难受至极,天天借酒消愁,目光呆滞,堕落无救也,其母见儿日渐消瘦,极其心疼,只得带儿郭靖前往桃花岛求助岛主黄药师。药师施展看家本领摇头示无解。其母不禁嚎哭,正准备带儿归,只见屋里出来一女子,长发披肩,全身白衣,头发上束了金带,肌肤胜雪,娇美无比,容色绝丽,不可逼。郭靖两眼发直。两人对视,顿时产生好感,一个未嫁,一个未娶,其父母当即结成亲家。
黄蓉便潜心修炼《iMC自动备份恢复宝典》,很快便悟透了宝典精髓:iMC PLAT自带数据库自动备份/恢复工具(DBMAN)为用户提供全面的系统灾备解决方案,通过DBMAN用户可以实现对iMC平台数据库(如config_db、monitor_db等)和组件数据库(如:UAM组件数据库ead)的自动备份与恢复处理。DBMAN采用了标准的SQL备份和恢复机制,它的数据处理对象是完整的数据库。用户只需根据不同的使用场景进行相应的配置及操作,便可通过DBMAN进行手动和自动两种方式的数据备份和恢复。正因为DBMAN对数据库自动备份恢复的智能性,安装部署的方便性,DBMAN解决方案在江湖上得到很多豪杰的赏识,九层以上门派都是采用DBMAN解决方案。黄蓉不禁沉思,方案甚好,为何不顺?
为打开夫婿心结,决定逐一拜访各门派弄清缘由,还郭靖清白。
黄蓉天生聪明,以丢失iMC数据库为由获取其他门派信任。并多加
打点,深入事故地点排查,发现蛛丝马迹便详细记录,并多加推断问题分析,方才恍然大悟,数月便成册为书。书名《iMC数据库维稳札记》,该书分上中下三册。上册为人为篇,主述人为问题原因导致数据库丢失或未曾开启DBMAN功能等。
中册历史经验篇,主述开启了DBMAN功能,但缘由江湖险恶,事情复杂多变,教你如何诊断变故。下册预防篇,汇集黄蓉参悟的如何确保DBMAN神器长久稳定运行,数据库永不丢失秘籍。
人为篇
江湖人人皆知,容灾机制乃网络业务稳定运行首要条件,相对H3C iMC认证系统,数据库乃起其所有,究其问题原因,服务器硬件故障?可换之。操作系统故障?可重装之。数据库丢失?大事,因其包含各门派所有弟子信息,丢之,则乱亦。总结历史教训,导致数据库丢失的主要问题原因是运维人员对数据库的重要性理解还不够,总结如下:
1、部分门派引入H3C iMC后却未开启iMC数据库备份功能,或开启了数据库自动备份功能但备份异常。
2、未部署iMC备服务器,存在单点故障。
3、配置了主备iMC服务器,但主备iMC数据库同步失败。
4、未定期对数据库的自动备份功能做巡检。
历史经验篇
开启DBMAN神器,却不如人意,为何?稍安勿躁,《iMC数据库维稳札记》有如下记载:
iMC安装目录/dbman/log下的dbman_debug文件记录了数据库备份、恢复的完整过程,一切不定数问题皆能从此获取缘由。
1、 主备iMC服务器备份或恢复路径有中文字符问题
问题现象:数据库备份,恢复失败。
问题分析:查看dbman_debug日志,有如下error信息:
公元17年 04:00:49 [ERROR] [int TimeBackup()] Open the databse file error. File=D:\imc安装文件\backup\db_catalog_20130905_040002.dat.
问题原因:备份、恢复路径不能存在中文字符。
解决方案:修改备份、恢复路径为英文字符方可。该症于iMC PALT V7SP1版本彻底解决。
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”为后缀名的文件
7、dbman\etc\ 文件夹下,增加了以“.skip”为后缀名的文件
预防篇
千里之堤,毁于蚁穴,数据库乃iMC之核心,必须防患于未然。
1、开启DBMAN自动备份功能,并将备份的数据库独立保存。
DBMAN手动备份出来的数据库存放在iMC服务器本地磁盘,自动备份的数据库一般通过FTP上传到iMC备服务器,为了防止iMC服务器故障导致磁盘数据丢失,建议将定期备份的iMC数据库保留一份到外置磁盘。比如,U盘、移动硬盘,总之,多一个备份,多一份保险。
2、对DBMAN功能定期做体检。
人有悲欢离合、神器也有阴晴圆缺,预防显得格外重要,我们应该定期对DBMAN的功能做巡检,具体包括:
a.查看dbman进程是否正常,如下图所示。
b.主服务器自动备份功能检查,可使用手工备份测试法,也可以查看备份文件存放目录是否有近期的备份文件以确定自动备份功能是否正常,如果备份不正常,可收集iMC安装目录/dbman/log下日志并反馈给产品线问题分析。
c.备服务器FTP软件工作状态检查,主服务器是通过FTP上传备份的数据库给备服务器,故需要确保备服务器FTP软件的工作正常。
d.备服务器自动恢复功能检查,可以查看备服务器自动恢复配置里“文件备份路径”下是否有最近的备份文件,如下图所示。
如果恢复不正常,可收集iMC安装目录/dbman/log下日志并反馈给产品线问题分析。
3、iMC主备服务器各版本一致性检查
DBMAN不管是手动恢复还是自动恢复成功的前提是备份和恢复数据库对应的iMC各版本要一致,否则必然恢复失败。新版本备份的数据库文件携带具体的版本信息,如下图所示。
对于老版本iMC,可打开“智能部署监控代理”>>“运行环境”页签查看对应的版本信息,如下图所示。
时隔多年,郭靖、黄蓉夫妇虽不在人世,但其名著《iMC数据库维稳札记》却在IT江湖界广为流传……