DM7数据库主备集群脑裂解决办法

由于主备集群的网络出现故障导致DM确认监视器认为主库出现故障,从而自动切换备库为主库,运行一段时间后主库恢复通信,此时存在两个主库且版本不一致(file_LSN及数据魔数不一致),最终演变成脑裂。

解决方案:经咨询DM技术人员,DM脑裂无法通过修改配置恢复正常集群,只能通过数据文件或者数据库备份恢复单实例数据库并重新搭建主备集群(好麻烦)。同时,查询主备两个数据库的file_LSN,数值较大的为更新的数据库(一般由于主库故障,备库接管,所以是原来的备库数据更全),通过最近的数据库文件来恢复可以保证几乎不丢失数据(与从备份恢复相比也省事很多)。

解决过程:
1、数据文件备份:将130、131的数据文件进行备份。

2、恢复单例:将130作为主库(mount、startup、primary),首先将dm.ini配置文件中alter_mode_status由0改为1(1表示允许手动修改数据库状态)。然后将主备(130、131)的所有服务关闭(包括监视器、守护进程与数据库实例),通过dmserver以mount方式启动主库实例,通过DIsql登录数据库,切换主库状态由primary切换为normal,再将数据库状态由startup切换为open。然后关闭mount启动方式,然后通过服务的方式启动数据库,通过manage管理器 登录数据库,右键localhost查看数据库状态:为普通模式,表示数据库已经恢复为单机。

3、主备搭建:将单机的数据库文件作为原始数据库,通过普通的流程完成数据库主备的搭建。因为配置文件是现成的,因此只需要拷贝主库数据文件到备库,替换配置文件(dm.ini、dmarch.ini、dmmail.ini、dmwatcher.ini)即可。该过程要注意一下几点:
a、注意主备的file_LSN、cur_LSN以及permanent_magic的值要保持一致。
b、oguid需要重新设置,为方便主备的恢复,可以沿用原来的oguid的值。
c、守护进程的控制文件需要重新生成:在主库生成后拷贝到备库使用。
d、将备库的实例注册成服务,注意注册成功后需要将服务设置为手动启动。
e、将监视器设置为普通模式(非确认监视器模式),防止以后出现类似的情况。以后主备出现故障只能手动启动确认监视器,然后进行主备库的切换。

遇到的问题
1、通过监视器强制实例接管主库失败、通过监视器强制改变主备的相关操作均失败。因为主备出现脑裂,正常方式无法恢复,所以失败。
2、将数据库主备恢复单机过程出现问题,报错-720:存在运行中的守护进程。因为dm.ini中参数alter_mode_status状态为0,无法手动改变主备状态为normal和open,因此需要手动改dm.ini参数,再以mount方式启动数据库,通过DIsql改变数据库状态。
3、恢复单机后,通过服务方式启动实例,立刻通过manage管理软件无法登陆,再通过dmserver+配置文件方式正常启动实例报错:10048,DM Listener can not create(已启动一个实例),因为已经通过服务的方式启动了实例,而manage无法登陆是因为服务刚启动,还无法立刻访问,稍等一会儿就可以登陆访问了,登陆后发现localhost属性中数据库状态为普通模式(即单机模式)。

猜你喜欢

转载自blog.csdn.net/qq_30726849/article/details/82900189