达梦主备集群多种故障情况模拟:#自动切换#主动切换#改单机

主备集群多种故障情况模拟

前言,主备如要实现自动切换和手动切换,必须要有一台服务器用作监视器,
这个监视器我们称之为非确认监视器,部署在主备机器上的我们称之为确认监视器。

在主备自动切换配置中,我们使用了普通监视器,并且配置了一台机器作为确认监视器。需要注意的是,一个主备集群最多只能有一个确认监视器。

监视器类型

  • 确认监视器:默认配置,使用配置文件(dmmonitor.ini)中的 MON_DW_CONFIRM 参数设置为 0。
  • 非确认监视器:用于确认主备切换,MON_DW_CONFIRM 参数设置为 1。

如果要实现自动切换和手动切换,需要更改配置文件

修改配置文件

需要修改 dmwatcher.ini 的参数:

vi /data/dmdata/DAMENG/dmwatcher.ini

[GRP1]
DW_TYPE    = GLOBAL
DW_MODE    = AUTO  #自动切换,手动切换需要改成MANUAL
  • DW_MODE:切换模式,缺省为 MANUAL。
    • MANUAL:故障手动切换模式。
    • AUTO:故障自动切换模式。
添加非确认监视器参数

如果设置的是自动切换,则必须要给这个参数,手动切换则不用给
在配置文件中添加确认监视器的参数:

MON_DW_CONFIRM = 1		#非确认监视器
MON_LOG_PATH = /opt/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 2048
MON_TAKEOVER_SHUTDOWN = 10		#自动切换必须要给这个参数,如果为0也不会自动切换
[GRP1]
MON_INST_OGUID = 45335
MON_DW_IP = 192.168.142.132:52141
MON_DW_IP = 192.168.142.133:52142

手册原话:如果配置了自动接管,因为老主库正常退出之后,默认配置(监视器的
MON_TAKEOVER_SHUTDOWN 配置为 0)无法触发自动接管,所以只能手动干预;如果
MON_TAKEOVER_SHUTDOWN 非 0,主库正常退出后,超过设定的时间主库仍未重启,
备库可以完成自动接管;

环境配置

  • 主服务器:192.168.142.132
  • 备服务器:192.168.142.133
  • 监视器:192.168.142.131

1. 主备自动切换

在主备自动切换配置中,我们使用了确认监视器,并且配置了一台机器作为非确认监视器。需要注意的是,一个主备集群最多只能有一个非确认监视器。

修改主和备的配置文件dmwatcher.ini

vim dmwatcher.ini
[GRP1]
DW_TYPE    = GLOBAL
DW_MODE    = AUTO	##修改这里

修改非确认监视器的配置文件,添加

vim dmmonitor0.ini
MON_DW_CONFIRM = 1
MON_TAKEOVER_SHUTDOWN = 10	##添加这里

下面将模拟主库故障,自动切换过程

正常情况
在这里插入图片描述
主库故障,发生切换
请添加图片描述
切换完成
在这里插入图片描述
主库恢复正常后自动会加入集群
在这里插入图片描述
在这里插入图片描述

2. 主备强制切换

在某些情况下,可能需要进行主备的强制切换。请确保在执行此操作之前,您已做好充分的准备和测试。

# 组中主库出现故障时,可以通过此命令选出组中可以执行正常接管的备库列表
choose takeover grp1
 
将主库网络直接中断,模拟主库故障,主库中执行命令
[root@NODE2 ~]# systemctl stop network
 
choose takeover grp1
 
# 用指定组中的指定备库接管组中的故障主库
takeover grp1.DM01
# 该命令要求监视器曾经收到过故障主库的历史信息,并且主库的历史信息必须满足被接管条件,可以先通过 choose takeover [group_name]选出符合正常接管条件的备库列表,选择其中一个备库执行接管操作即可。

查看允许进行切换的备库
在这里插入图片描述
因为上一步模拟自动切换,DM02现在是主库,所以DM01现在是备库
在这里插入图片描述
手动将主库故障,之后在执行takeover grp1.DM01
在这里插入图片描述
至此,手动切换完成

如果执行choose takeover grp1出现下面的提示

no database can do takeover!   --守护进程是STARTUP状态不能执行takeover命令

可以使用备库强制接管
如果执行 Takeover 命令不成功,但主库可能由于硬件损坏等原因无法马上恢复,为DM 数据守护与读写分离集群 V4.0了及时恢复数据库服务,DM 提供了 Takeover Force 命令,强制将备库切换为主库。但需要由用户确认主库故障前,主库与接管备库的数据是一致的(主库到备库的归档是 Valid状态),避免引发守护进程组分裂。
RSTAT : 此 字 段 对 备 库 有效,表 示 主 库 到 备 库 的 归 档 状 态 , 可 能 为Valid/Invalid/Unknown,对于本地守护类型的备库,此字段为 NULL,对于主库本身,此字段值为 Valid。该字段值要从备库对应的主库实例上取,如果当前没有活动主库或者
DM 数据守护与读写分离集群 V4.0备库无法确认对应的主库,则该字段显示为 Unknown。

指定组中主库出现故障时,可以通过此命令选出组中可以执行强制接管的备库列表

choose takeover force grp1

使用指定组中的指定备库强制接管组中的故障主库。执行此命令需要先登录监视器。

takeover force grp1.NODE1

3. 主备改单机

在特定场景下,需要将主备集群改为单机模式。

停止监视器,守护进程和数据库服务

./DmMonitorServiceMONITOR stop
./DmWatcherServiceDM02 stop
./DmServiceDM02 stop

关闭mal邮件系统,删除dmmal配置文件

vim dm.ini
MAL_INI=0		#关闭mal
ALTER_MODE_STATUS=1	#改成1

修改dmarch.ini,注释主备配置

vim dmarch.ini
#注释下面三行主备配置
#[ARCHIVE_REALTIME]
#ARCH_TYPE                               = REALTIME
#ARCH_DEST                               = DM01  ##备库为DM01
[ARCHIVE_LOCAL1]
ARCH_TYPE                   = LOCAL
ARCH_DEST                   = /data/dmarch
ARCH_FILE_SIZE             = 1024
ARCH_SPACE_LIMIT      = 10240    ##根据实际磁盘填写,勿超出

启动数据库,修改数据库状态

./DmServiceDM02 start

在这里插入图片描述

登录数据库执行sql

 SQL> ALTER DATABASE NORMAL;

修改服务配置文件

cd /opt/dmdbms/bin
vim DmServiceDM01
	START_MODE由MOUNT改为OPEN
	START_MODE=open

重启数据库服务

  cd /opt/dmdbms/bin

 ./DmServiceDM01 restart

检测主机数据库是否开启

  SELECT * FROM V$INSTANCE;

在这里插入图片描述
主库执行同样操作,至此,主备变单机完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值