达梦与HA工作与测试方案
长沙做网站根据4月8号针对数据库与HA配合机制专题讨论结果,达梦公司与凝思公司人员对要改进的内容进行分析,并于4月13号在华中电网现场同华中电网工作人员就HA现有的的工作机制进行了深入的讨论。综合二次讨论的结果,确定了优化和改进的内容与目标。在HA常用操作处理上达成了共识,在此基础上形成了相应的测试方案。
优化内容与目标
达梦数据库
根据讨论结果,达梦将会在以下三个方面开展工作,具体的内容如下。
问题及处理方案
1. 达梦数据库正常停止优化
达梦数据库正常停止优化,为操作系统提供一个合理的停止超时时间。使用tpcc标准测试模拟现场数据库正常操作压力,使用程序进行大表更新模拟现场数据采集压力,优化达梦服务进程及相关配置,保障达梦能在70秒内完成停止。同时考虑到数据库的停止时间可能会存在差异,在达梦的停止脚本中添加超时强杀处理机制,保障达梦能在70秒内完成停止。
2. 达梦数据库启动优化
达梦启动分为二个层面,从HA层面,达梦完成启动,目前达梦能在5至10秒内完成,即在5至10秒后,使用命令:service dmserverd status查看数据库是运行状态,已达到HA的要求,但此时,从数据库角度,达梦正在加载相关组件,不能对外提供数据库服务。此次优化的重点是在数据库层面的启动时间。使用tpcc标准测试模拟现场数据库正常操作压力,使用程序进行大表更新模拟现场数据采集压力,优化达梦服务进程及相关配置,使数据库能平均在2分钟内完成启动。
3. 提供外部程序,检测数据库状态
提供外部程序,检测数据库状态,解决达梦进程在,但不对外提供服务的问题。
凝思HA
针对现有HA存在的5个问题和解决方案如下,
湘龙工作室目前已按照解决方案进行了优化和修改
问题(一)
描述
在一定的情况下,HA会启动切换备机的策略。HA首先会将管理的资源在主机按照逆序停止,在停止过程中,有可能会出现HA在规定的超时时间内无法正常停止某个资源(比如:dmserverd进程),HA怎么办?现在HA是将停止整套动作中止,然后再重新检查资源的状态,可是检查资源状态的时候,刚才被中断操作的资源对象是处umanaged状态,HA现在对于这样状态的资源没解决办法。
解决方案
配合达梦的超时强杀进程新特性,这样上述该问题在99.999%的情况下得到解决。如果达梦的超时强杀,还是不能解决该问题,那么就会启动重启处理。为什么直接重启,因为卸载文件系统和释放虚拟IP地址存在一定的数据丢失风险,因为dmserverd进程是异常停止的,存在数据处理的风险,所以才用重启处理。
问题(二)
描述
目前,HA不支持关键信息提示功能,比如:HA发生切换、HA出现无法处理的故障的情况。
解决方案
创建一个守护进程,监视HA日志文件,通过分析HA日志,输出告警信息。再调用四川电网的短信平台的接口,实现以短信的方式输出告警信息。
问题(三)
描述
当前由于HA管理资源的启动、停止时间设置不合理,导致一些不合理的处理。
解决方案
配合达梦厂商测试,根据达梦实际的测试结果,修改相应的时间。
问题(四)
描述
在现实过程中,可能会出现心跳线断开的情况,在心跳线断开的情况下,目前HA会让备机也启动资源,但是主机的资源还在正常提供服务,那么会出现冲突。
解决方案
做心跳线冗余,采用双心跳线。如果在双心跳线,仍然无法满足需求,我们可以将接入外网的网线也添加到心跳线,这样就有四个心跳线。还可以添加一个串口线,作为心跳线来做冗余。
还可以通过ping网口,来检测心跳线是否正常来解决。但是这种方式,并没有真正完全HA的“裂脑”问题。主要还是建议通过心跳线冗余来解决。
HA常用操作处理方案
做网站用什么软件?可以用达梦数据库。在这部分内容,重点讲解关于达梦服务异常相关的处理方案。
主机达梦
服务进程在,但不提供服务处理流程
如果出现达梦服务进程在,但对外不提供服务。通过达梦提供的检查达梦服务是否正常运行,强杀达梦服务,造成HA能够处理的关键进程宕机的情况,转由HA进行后续处理。
主机达梦服务进程不在处理流程
本机达梦服务进程不在包括本机正常停止和意外宕机,首先HA会优化在本机将达梦服务启动,如果失败才会启动切机流程,HA处理流程如下:
HA切机流程
下图是主机和备机HA正常运行时,执行service heartbeat stop的流程,此次HA重点改进了对于超时失败的处理机制。为了保障现场数据的安全性,在卸载相关资源超时后,会重启本机操作系统,由备机安全的接管理系统,对外提供服务。
测试方案
以下测试,均在现场环境数据库压力下进行,数据库压力包括:使用现场应用程序访问数据库正常操作压力,使用程序进行大表更新模拟现场数据采集压力。
此次测试,除对HA常规功能测试外,重点测试以下内容:
1、 关系数据库正常停止时间耗时。
2、 关系数据库正常停止后启动时间耗时。
3、 HA切机时间耗时。
4、 HA切机异常处理机制,保障切机顺利完成。
测试环境:
Devel1: 16核CPU,16G内存;
Hist2:16核CPU,16G内存;
数据库参数配置:BUFFER=150000,CHKPNT_INTERVAL= 60(检查点时间间隔1分钟),CHKPNT_FLUSH = 20(刷盘比例20%)
关系库测试
1 测试关系库实例进程停止时间
测试用例名称
|
测试关系库实例进程停止时间
|
用例编号
|
DB1
|
编制人
|
陈鹏
|
编制时间
|
2011-4-11
|
审核人
|
|
审核时间
|
|
测试目的:
验证关系库实例能否在70秒内停止,一共测试10次,10次都能正常停止
|
测试步骤:
- 执行关系库停库命令,记录终端返回命令执行成功时间;
此用例执行10次。
|
预期结果:
10次都能在70秒内停止,终端返回停止成功,10次都能正常停止
测试结果:
|
用例间的依赖关系:
|
备注:
|
相关程序:
|
测试结论:
成功:[填写测试结论]
|
失败:[填写Bug号]
|
|
|
|
|
|
2测试关系库实例进程正常停止后的启动时间
测试用例名称
|
测试关系库实例进程正常停止后的启动时间
|
用例编号
|
DB2
|
编制人
|
陈鹏
|
编制时间
|
2011-4-11
|
审核人
|
|
审核时间
|
|
测试目的:
验证关系库服务正常停止后,HA能否在10秒内拉起dmserverd,完成操作系统级启动。同时记录关系库服务加载完组件,对外提供服务时间间隔,计算平均时间。此用例执行10次
|
测试步骤:
1、正常停止关系库服务后,观察dm日志,记录从停止成功到启动的时间是否在10秒内,即HA能否在10秒内拉起dmserverd;
2、记录关系库服务加载完组件时间,通过查看关系库相关日志内容,显示关系库启动完毕,库组件加载完成,计算平均时间。(观察dm_XX.log)
此用例执行10次。
|
预期结果:
第1步:10次都能在10秒返回结果。
第2步:平均时间在1分钟内
测试结果:
|
用例间的依赖关系:
|
备注:
|
相关程序:
|
测试结论:
成功:[填写测试结论]
|
失败:[填写Bug号]
|
|
|
|
|
|
3 测试关系库实例进程异常停止后的启动时间
测试用例名称
|
关系库实例进程异常停止后的启动时间
|
用例编号
|
DB3
|
编制人
|
陈鹏
|
编制时间
|
2011-4-11
|
审核人
|
|
审核时间
|
|
测试目的:
验证关系库服务异常停止后,执行启动关系库命令后都能在10秒内返回值。完成操作系统级启动。
|
测试步骤:
1、 异常停止关系库服务后,执行启动关系库命令后,10秒内能返回结果给终端。执行kill -9 pid;date命令,记录从打印的date时间到dm日志中输出DM Database Server startup...的时间,两者时间差即为从强杀dmserver到启动的时间。
此用例执行10次。
|
预期结果:
第一步:10次都能在10秒返回结果。
测试结果:
|
用例间的依赖关系:
|
备注:
|
相关程序:
|
测试结论:
成功:[填写测试结论]
|
失败:[填写Bug号]
|
|
|
|
|
|
HA测试
测试前提:
- 在主机和从机上,安装麒麟或凝思操作系统;
- 在主机和从机上,安装双机热备HA软件;
- 在主机和从机上,设置双机热备软件相关的配置文件;
1 测试HA正常的工作状态
测试用例名称
|
测试HA正常的工作状态
|
用例编号
|
DB-HA1
|
编制人
|
陈鹏
|
编制时间
|
2011-4-11
|
审核人
|
|
审核时间
|
|
测试目的:
验证配置完双机系统的HA服务后,HA是否在主机上开启相关资源。
|
测试步骤:
- 在两台机器上都开启HA服务(先开启主机,后开启备份机)
- 查看主机上相关资源是否已开启:
#ifconfig#查看虚拟IP是否已配置(通常配置为bond0:0)
#df -h #查看存储是否已挂载
#查看关系库相关服务是否已开启
|
预期结果:
第1步:主备机开启HA服务均成功;
第2步:
虚拟IP已在主机上配置成功;
存储已挂载;
关系库服务已在主机上运行。
测试结果:
|
用例间的依赖关系:
|
备注:
|
相关程序:
|
测试结论:
成功:[填写测试结论]
|
失败:[填写Bug号]
|
|
|
|
|
|
2测试设备宕机时的资源管理
测试用例名称
|
测试设备宕机时的资源管理
|
用例编号
|
DB-HA2
|
编制人
|
陈鹏
|
编制时间
|
2011-4-11
|
审核人
|
|
审核时间
|
|
测试目的:
当主机宕机时(意外断电,关闭HA服务等),备份机是否自动开启所有资源
|
测试步骤:
1. 关闭主机上的HA服务
2. 过一段时间后,在备机上查看资源是否开启:
#ifconfig #查看虚拟IP是否已漂移到备机
#df -h #查看存储是否已挂载
#查看关系库服务是否已开启
|
预期结果:
第2步:
虚拟IP已在备机上显示;
存储已在备机上挂载;
关系库服务已在备机上运行。
测试结果(需记录详细操作步骤和每步耗时):
|
用例间的依赖关系: 依赖于DB-HA1
|
备注:
|
相关程序:
|
测试结论:
成功:[填写测试结论]
|
失败:[填写Bug号]
|
|
|
|
|
|
3测试本机的资源管理
测试用例名称
|
测试本机的资源管理
|
用例编号
|
DB-HA3
|
编制人
|
陈鹏
|
编制时间
|
2011-4-11
|
审核人
|
|
审核时间
|
|
测试目的:
当HA管理的资源(如虚拟IP、文件系统、系统服务)不工作时,在本机自动恢复资源的操作
|
测试步骤:
1. 停止主机上的关系库服务
2. 过一段时间后(可在图形管理工具中配置),观察主机上的关系库服务是否自动重启。
|
预期结果:
第2步:
主机上的关系库服务自动重启。
测试结果(需记录详细操作步骤和每步耗时):
|
用例间的依赖关系: 依赖于DB-HA1
|
备注:
|
相关程序:
|
测试结论:
成功:[填写测试结论]
|
失败:[填写Bug号]
|
|
|
|
|
|
4 测试集群中的资源管理
测试用例名称
|
测试集群中的资源管理
|
用例编号
|
DB-HA4
|
编制人
|
陈鹏
|
编制时间
|
2011-4-11-
|
审核人
|
|
审核时间
|
|
测试目的:
当集群中的工作结点在本机恢复资源失败时,将所有资源自动转移至备份机上
|
测试步骤:
1. 强杀主机达梦服务,并同时执行步骤2
2. 当主机上的关系库服务正常运行时,利用chmod命令去掉关系库服务进程的可执行属性(模拟关系库无法重新启动)
输入chmod -x dmserverd
或直接重命名dmserverd(kill -9 pid;mv /etc/…)
|
预期结果:
第2步:
如果HA工作正常,过一段时间后,将会看到在主机上释放了所有资源,并在备份机上开启了所有资源。
测试结果(需记录详细操作步骤和每步耗时):
|
用例间的依赖关系: 依赖于DB-HA1
|
备注:
|
相关程序:
|
测试结论:
成功:[填写测试结论]
|
失败:[填写Bug号]
|
|
|
|
|
|
5 正常停止时HA重启关系库服务用时
测试用例名称
|
正常停止时HA重启关系库服务用时
|
用例编号
|
DB-HA5
|
编制人
|
陈鹏
|
编制时间
|
2011-4-11
|
审核人
|
|
审核时间
|
|
测试目的:
应用正常访问数据库状态下,当HA在主备上搭建成功并正常运行时,正常停止主机的关系库服务,测试从停止关系库服务开始到HA重启关系库服务成功的总时间。
|
测试步骤:
1. 在主机运行应用程序访问数据库对系统加压;
2. 停止主机的关系库服务
3. 过一段时间,观察关系库服务是否被HA重新启动;
4. 观察关系库日志中记录的停止时和重启成功的时间,计算从停止关系库服务开始到HA重启关系库服务成功的总时间。
|
预期结果:
第2步:主机上关系库服务成功停止;
第3步:关系库服务被HA重启。
测试结果(需记录详细操作步骤和每步耗时):
|
用例间的依赖关系: 依赖于DB-HA1
|
备注:正常停止关系库服务用时:
启动关系库服务用时:
|
相关程序:
|
测试结论:
成功:[填写测试结论]
|
失败:[填写Bug号]
|
|
|
|
|
|
6 异常停止时HA重启关系库服务用时
测试用例名称
|
异常停止时HA重启关系库服务用时
|
用例编号
|
DB-HA6
|
编制人
|
陈鹏
|
编制时间
|
2011-4-11
|
审核人
|
|
审核时间
|
|
测试目的:
外部应用访问下,当HA在主备上搭建成功并正常运行时,直接kill主机的关系库服务进程,测试从直接kill关系库服务开始到HA重启关系库服务成功的总时间。
|
测试步骤:
1. 在主机运行应用程序访问数据库对系统加压;
2. 直接kill主机的关系库服务
3. 过一段时间,观察关系库服务是否被HA重新启动;
4. 观察关系库日志中记录的停止时和重启成功的时间,计算从直接kill关系库服务开始到HA重启关系库服务成功的总时间。
|
预期结果:
第2步:直接kill主机上关系库服务成功;
第3步:关系库服务被HA重启
测试结果(需记录详细操作步骤和每步耗时):
|
用例间的依赖关系: 依赖于DB-HA1
|
备注: 直接kill关系库服务后,HA重新启动关系库服务用时:
|
相关程序:
|
测试结论:
成功:[填写测试结论]
|
失败:[填写Bug号]
|
|
|
|
|
|
7 手动切换HA用时
测试用例名称
|
手动切换HA用时
|
用例编号
|
DB-HA7
|
编制人
|
陈鹏
|
编制时间
|
2011-4-11
|
审核人
|
|
审核时间
|
|
测试目的:
外部应用访问下,当HA在主备上搭建成功并正常运行时,手动切换HA使资源从主机转到备机上,测试切换完成所需时间
|
测试步骤:
1. 在主机运行应用程序访问数据库对系统加压;
2. 手动切换HA服务,停止主机上的HA
3. 记录停止HA服务时的时间点T1;
4. 观察备机上资源启动情况,备机上资源都启动后,记录时间点T2;
5. 计算从手动切换HA服务开始到备机成功启动资源的总共时间T2-T1。
|
预期结果:
第2步:HA服务成功停止;
第4步:备机上资源成功启动。
测试结果(需记录详细操作步骤和每步耗时):
|
用例间的依赖关系: 依赖于DB-HA1
|
备注:
|
相关程序:
|
测试结论:
成功:[填写测试结论]
|
失败:[填写Bug号]
|
|
|
|
|
|
8 HA切机异常处理测试
测试用例名称
|
HA切机异常处理测试
|
用例编号
|
DB-HA8
|
编制人
|
陈鹏
|
编制时间
|
2011-4-11
|
审核人
|
|
审核时间
|
|
测试目的:
外部应用访问下,当HA在主备上搭建成功并正常运行时,手动切换HA使资源从主机转到备机上,在过程中制造故障,使HA无法卸载磁盘,HA不会因此停止切机操作。正常完成切机。
|
测试步骤:
1. 在主机运行应用程序访问数据库对系统加压;
2. 使用程序登陆致磁盘上,进行简单读写操作。
3. 手动切换HA服务,停止主机上的HA。
4. 主机无法卸载磁盘,HA会有后续操作,保障切机完成,如通过发出重启本机操作系统命令等手段强制卸载。
5. 观察备机上资源启动情况,资源都在备机启动。
|
预期结果:
第4步:主机后续操作保证资源卸载完成。
第5步:备机上资源成功启动。
测试结果(需记录详细操作步骤和每步耗时):
|
用例间的依赖关系: 依赖于DB-HA1
|
备注:
|
相关程序:
|
测试结论:
成功:[填写测试结论]
|
失败:[填写Bug号]
|
|
|
|
|
|
9 拔备机网线处理测试
测试用例名称
|
拔备机网线处理测试
|
用例编号
|
DB-HA9
|
编制人
|
陈鹏
|
编制时间
|
2011-5-11
|
审核人
|
|
审核时间
|
|
测试目的:
当HA在主备上搭建成功并正常运行时,拔掉备机上的网线(不拔心跳线),预期不影响主机上的资源运行。
|
测试步骤:
1. 当HA在主备上搭建成功并正常运行时,拔掉备机上的网线;
2. 观察主机上资源(虚拟IP,磁盘,数据库服务)情况。
|
预期结果:
第2步:资源(虚拟IP,磁盘,数据库服务)仍然在主机上,拔备机网线不影响主机运行。
测试结果:
|
用例间的依赖关系: 依赖于DB-HA1
|
备注:
|
相关程序:
|
测试结论:
成功:[填写测试结论]
|
失败:[填写Bug号]
|
|
|
|
|
|
10 拔主机网线处理测试
测试用例名称
|
拔主机网线处理测试
|
用例编号
|
DB-HA10
|
编制人
|
陈鹏
|
编制时间
|
2011-5-11
|
审核人
|
|
审核时间
|
|
测试目的:
当HA在主备上搭建成功并正常运行时,拔掉主机上的网线(不拔心跳线),预期资源切换到备机上。
|
测试步骤:
1、当HA在主备上搭建成功并正常运行时,拔掉主机上的网线;
2、观察备机上资源(虚拟IP,磁盘,数据库服务)情况。
|
预期结果:
第2步:资源(虚拟IP,磁盘,数据库服务)从主机切换到了备机上。
测试结果:
|
用例间的依赖关系: 依赖于DB-HA1
|
备注:
|
相关程序:
|
测试结论:
成功:[填写测试结论]
|
失败:[填写Bug号]
|
达梦与HA工作与测试方案资料下载地址:http://www.csjwang.com/BreviaryImg/达梦与HA工作方案及测试.docx
为
长沙做网站的工作室
湘龙工作室原创,转载请以链接形式注明出处,谢谢。
本文地址:
http://www.csjwang.com/xiazai/damengyuHA-143/