达梦数据库数据守护与读写分离集群节点脑裂故障的恢复

一、前言

       用于解决由于硬件故障、自然灾害等原因导致的数据库服务长时间中断问题,提供不间断数据库服务,达梦数据库推出了达梦数据守护集群软件(DM Data Watch)和达梦读写分离集群(DMRWC)。

       达梦数据守护集群软件(DM Data Watch)是一种集成化的高可靠性解决方案,该方案基于数据库REDO日志,不依赖于第三方软件和存储,用于解决由于硬件故障、自然灾害等原因导致的数据库服务长时间中断问题,提供不间断数据库服务,可同时满足用户对数据安全性和高可用性的要求。数据守护包含的主要部件有:主数据库、备数据库、联机REDO日志系统、本地REDO日志归档服务、实时REDO日志归档服务、REDO日志重做服务、MAL系统、守护进程和监视器。其中,守护进程和监视器是两个独立的工具,其他部件集成在DM8数据库服务器DMSERVER中。

       达梦读写分离集群(DMRWC)是DM8提供的一个用于提升并发事务处理性能的集群组件。在一个高并发的事务型系统中,当写事务占的比例相对读事务较小时,DM8提供的这种独具创新的方案DMRWC,可通过客户端来实现读、写事务的自动分离,读事务在备机执行,写事务在主机执行,减轻主机的负载。

二、数据库集群状态

      截止目前,达梦读写分离集群已经大面积使用在各级机构,但有关读写分离集群的故障处理资料并不多。本编文章主要讨论某一节点数据库服务出现脑裂,在不影响对外继续提供服务的情况下的集群恢复进行具体分析。

用于测试的数据库环境规划:

IP

用途

数据库版本

操作系统

安装位置

服务端口

实例名

组名

192.168.237.113

主库

DM8

X86 64位

/dm8

5236

DMSVR01

GRP1

192.168.237.114

备库

DM8

X86 64位

/dm8

5237

DMSVR02

GRP1

192.168.237.115

确认监视器

DM8

X86 64位

/dm8

-

     通过确认监视器(192.168.237.115)查看集群服务状态:

cd /dm8/bin

./dmmonitor /dm8/bin/dmmonitor.ini

show

        如图,通过确认监视可以看出两台数据库的状态,当数据库出现以上内容,表示集群中节点正常:

WCTLSTAT=VALID,表示守护进程控制文件状态为有效的;

WSTATUS=OPEN,表示守护进程状态为打开;

INAME=DMSVR01/DMSVR02,两台数据库实例名

INST_OK=OPEN,节点的实例状态为打开

ISTATUS=OPEN,数据库状态为打开

IMODE=PRIMARY/STANDBY,节点的实例模式为主/备;

三、数据库脑裂状态示例

       同样,通过确认监视器查看数据库状态,发现节点2的数据库守护进程脑裂状态(WCTLSTAT=SPLIT),数据库处于mount状态(ISTATUS=MOUNT),具体如下图所示

        尝试打开2节点数据库(DMSVR02)失败,如下图

        登录2节点数据库,数据库处于mount状态,不能正常应用,如下图:

四、数据库修复过程

       针对出现脑裂状态的达梦主备和读写分离的数据库,同时保证主节点正常应用,恢复过程需要以下步骤:

  1. 关闭确认监视器dmmonitor服务;
  2. 关闭备节点dmwatcher服务;
  3. 确认备节点dmserver服务是否为关闭状态;
  4. 确认主节点服务是否正常;
  5. 主节点联机备份;
  6. 备份备节点配置文件;
  7. 删除备节点数据库,并恢复数据库;
  8. 修改备节点状态和配置文件;
  9. 启动备节点数据库;
  10. 启动备节点数据库守护服务;
  11. 启动确认监视器,并查看运行情况。

4.1 关闭确认监视器服务

登录确认监视器服务器192.168.237.115,执行以下命令

ps -ef|grep dmmonitor

Kill -9 XXXX

4.2 关闭备节点dmwatcher服务

登录备节点数据库192.168.237.114,执行以下命令:

systemctl stop DmWatcherServiceDMWATCHER

确认服务是否关闭:

ps -ef|grep dmwatcher
4.3 确认备节点dmserver是否为关闭状态

登录备节点数据库192.168.237.114,执行以下命令:

ps -ef|grep dmserver

一般此时,备节点dmserver为关闭状态,如果存在,需要关闭dmserver服务

4.4 确认主节点服务是否正常

   登录主节点数据库192.168.237.113,通过DISQL登录数据库,查看是否运行正常

   

 4.5 主节点联机备份

   登录主节点数据库192.168.237.113,通过DISQL登录数据库,执行备份命令

   backup database full backupset ‘/dm8/dmbak/full_bak_03’;

   

   将备份文件传输至备节点

4.6 备份备节点配置文件

登录备节点数据库192.168.237.114,对dmmal.ini\dmwatcher.ini\dmarch.ini\dm.ini。

[dmdba@localhost DM01]$ cp dmmal.ini /opt/bak/

[dmdba@localhost DM01]$ cp dmwatcher.ini /opt/bak/

[dmdba@localhost DM01]$ cp dmarch.ini /opt/bak/

[dmdba@localhost DM01]$ cp dm.ini /opt/bak/

4.7 删除备节点数据库,并按照主节点数据库初始化,并恢复数据库

4.7.1删除备节点数据库

[root@localhost tool]# cd /dm8/tool/

[root@localhost tool]# ./dbca.sh

4.7.2按照原备节点重新初始化数据库

4.7.3 按照主节点备份恢复数据库

./dmrman

RESTORE DATABASE '/dm8/data/DM01/dm.ini' FROM BACKUPSET '/dm8/dmbak/full_bak_03';

RECOVER DATABASE '/dm8/data/DM01/dm.ini' FROM BACKUPSET '/dm8/dmbak/full_bak_03';

RECOVER DATABASE '/dm8/data/DM01/dm.ini' UPDATE DB_MAGIC;

4.8 修改备节点状态和配置文件

4.8.1修改dm.ini

vi dm.ini文件,修改配置文件内容

DW_INACTIVE_INTERVAL   =   60  

ALTER_MODE_STATUS   =  1(由于是集群节点恢复,先调整为1,后续调整为0) 

ENABLE_OFFLINE_TS = 2

MAL_INI   =   1

ARCH_INI = 1

RLOG_SEND_APPLY_MON  = 64

4.8.2 还原dmmal.ini\dmwatcher.ini\dmarch.ini

[dmdba@localhost bak]$ cd /opt/bak

[dmdba@localhost bak]$ cp dmmal.ini /dm8/data/DM01/

[dmdba@localhost bak]$ cp dmwatcher.ini /dm8/data/DM01/

[dmdba@localhost bak]$ cp dmarch.ini /dm8/data/DM01/

4.9mount启动备节点数据库服务

4.9.1启动数据库服务

./dmserver /dm8/data/DM01/dm.ini mount

4.9.2进入DISQL,修改数据库为备库模式

[dmdba@localhost ~]$ cd /dm8/bin

[dmdba@localhost bin]$ ./disql SYSDBA/DM01SYSDBA@localhost:5237

服务器[localhost:5237]:处于主库配置状态

登录使用时间 : 5.920(ms)

disql V8

SQL> alter database open force;

操作已执行

已用时间: 530.655(毫秒). 执行号:0.

SQL> alter database mount;

操作已执行

已用时间: 360.915(毫秒). 执行号:0.

SQL> sp_set_oguid(453331);

DMSQL 过程已成功完成

已用时间: 3.156(毫秒). 执行号:400.

SQL> alter database standby;

操作已执行

已用时间: 5.032(毫秒). 执行号:0.

SQL>

4.10启动备节点数据守护服务

[root@localhost ~]# systemctl start DmWatcherServiceDMWATCHER

4.11启动确认监视器,确认服务状态

4.11.1 启动确认监视器

登录确认监视器服务器192.168.237.115

[dmdba@localhost bin]$ ./dmmonitor dmmonitor.ini

 4.11.2 通过确认监视器启动数据库实例

登录确认监视器

login

打开数据库实例

open database GRP1.DMSVR02

重新查看集群状态

   更多资讯请上达梦技术社区了解: https://eco.dameng.com

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值