达梦数据守护集群配置与故障模拟

达梦主备集群数据守护集群配置与故障模拟

书接上文,主备搭建可以参考这篇博客
https://blog.csdn.net/weixin_49370146/article/details/142147301

1. 注册集群服务(使用 root 用户操作)

1.1 主库:192.168.58.138

  • 注册数据守护进程服务:

    需要 root 用户登录注册服务:

    /dm8/dminstall/script/root/dm_service_installer.sh -t dmwatcher -p NODE1 -watcher_ini /dm8/dmdata/APP/dmwatcher.ini
    
  • 禁用数据守护进程开机自启:

    systemctl disable DmWatcherServiceNODE1.service
    

1.2 备库:192.168.58.139

  • 注册数据守护进程服务:

    将守护进程注册为服务(数据库会由数据守护自动拉起),需要 root 用户登录注册服务:

    /dm8/dminstall/script/root/dm_service_installer.sh -t dmwatcher -p NODE2 -watcher_ini /dm8/dmdata/APP/dmwatcher.ini
    
  • 禁用数据守护进程开机自启:

    systemctl disable DmWatcherServiceNODE2.service
    

1.3 监视器:192.168.58.140

  • 确认监视器注册为服务:

    root 用户登录注册服务:

    /dm8/dminstall/script/root/dm_service_installer.sh -t dmmonitor -p APP -monitor_ini /dm8/dmdata/dmmonitor.ini
    

    :-p 原本是指定实例名,但是这个监视器是部署到第三台机器上,没有数据库实例,所以就使用主备库中 APP 数据库名。

  • 关闭自启动服务:

    systemctl disable DmMonitorServiceAPP.service
    
  • 创建非确认监视器用于管理:

    su - dmdba
    cp /dm8/dmdata/dmmonitor.ini /dm8/dmdata/dmmonitor_0.ini
    
  • 修改 dmmonitor_0.ini 文件,内容如下:

    vim /dm8/dmdata/dmmonitor_0.ini
    MON_DW_CONFIRM = 0 # 0非确认监视器模式
    

2. 修改后台启动文件,配置以 mount 启动(使用 dmdba 用户操作)

2.1 主库:192.168.58.138

su - dmdba
cd /dm8/dminstall/bin
vim DmServiceNODE1
- 修改内容:`START_MODE=open` 改为 `START_MODE=mount`

2.2 备库:192.168.58.139

su - dmdba
cd /dm8/dminstall/bin
vim DmServiceNODE2
- 修改内容:`START_MODE=open` 改为 `START_MODE=mount`

3. 启动实时主备守护集群(使用 dmdba 用户操作)

3.1 启动主库实例(192.168.58.138)

cd /dm8/dminstall/bin
./DmServiceNODE1 start

3.2 启动备库实例(192.168.58.139)

cd /dm8/dminstall/bin
./DmServiceNODE2 start

3.3 启动主库守护进程(192.168.58.138)

cd /dm8/dminstall/bin
./DmWatcherServiceNODE1 start

3.4 启动备库守护进程(192.168.58.139)

cd /dm8/dminstall/bin
./DmWatcherServiceNODE2 start

3.5 启动监视器(192.168.58.140)

  • 启动确认监视器:

    cd /dm8/dminstall/bin
    ./DmMonitorServiceAPP start
    
  • 启动非确认监视器查看主备运行情况:

    /dm8/dminstall/bin/dmmonitor /dm8/dmdata/dmmonitor_0.ini
    

4. 配置 dm_svc.conf(使用 dmdba 用户操作)

dm_svc.conf 配置文件,Windows 平台下位于 %SystemRoot%\system32 目录中,Linux 平台下位于 /etc 目录。

参数说明:

  • LOGIN_MODE:指定优先登录的服务器模式。
  • SWITCH_TIME:检测到数据库实例故障时,接口在服务器之间切换的次数。
  • SWITCH_INTERVAL:表示在服务器之间切换的时间间隔,单位为毫秒。

4.1 主库:192.168.58.138

vim /etc/dm_svc.conf
- 添加内容如下:
TIME_ZONE=(+8:00)
LANGUAGE=(cn)
DM_APP=(192.168.58.138:5236,192.168.58.139:5236)

[DM_APP]
LOGIN_MODE=(1)
SWITCH_TIME=2000
SWITCH_INTERVAL=10
  • 测试:
/dm8/dminstall/bin/disql SYSDBA/SYSDBA@DM_APP

4.2 备库:192.168.58.139

vim /etc/dm_svc.conf
- 添加内容如下:
TIME_ZONE=(+8:00)
LANGUAGE=(cn)
DM_APP=(192.168.58.138:5236,192.168.58.139:5236)

[DM_APP]
LOGIN_MODE=(1)
SWITCH_TIME=2000
SWITCH_INTERVAL=10
  • 测试:
/dm8/dminstall/bin/disql SYSDBA/SYSDBA@DM_APP

5. 数据守护环境启动与关闭测试(使用 dmdba 用户操作)

因为 Global 守护类型的守护进程,会自动将数据库实例切换到 Open 状态,并将守护进程状态也切换为 Open。因此在关闭 dmwatcher 系统时,必须按照一定的顺序来关闭守护进程和实例。

5.1 手动关闭 dmwatcher 环境

  1. 关闭监视器进程(192.168.58.140)

    cd /dm8/dminstall/bin
    ./DmMonitorServiceAPP stop
    
  2. 关闭备库数据守护进程(192.168.58.139)

    cd /dm8/dminstall/bin
    ./DmWatcherServiceNODE2 stop
    
  3. 关闭主库数据守护进程(192.168.58.138)

    cd /dm8/dminstall/bin
    ./DmWatcherServiceNODE1 stop
    
  4. 关闭主库实例(192.168.58.138)

    cd /dm8/dminstall/bin
    ./DmServiceNODE1 stop
    
  5. 关闭备库实例(192.168.58.139)

    cd /dm8/dminstall/bin
    ./DmServiceNODE2 stop
    

5.2 手动启动 dmwatcher 环境

  1. 启动主库实例(192.168.58.138)

    cd /dm8/dminstall/bin
    ./DmServiceNODE1 start
    
  2. 启动备库实例(192.168.58.139)

    cd /dm8/dminstall/bin
    ./DmServiceNODE2 start
    
  3. 启动主库守护进程(192.168.58.138)

    cd /dm8/dminstall/bin
    ./DmWatcherServiceNODE1 start
    
  4. 启动备库守护进程(192.168.58.139)

    cd /dm8/dminstall/bin
    ./DmWatcherServiceNODE2 start
    
  5. 启动监视器(192.168.58.140)

    • 启动确认监视器:

      cd /dm8/dminstall/bin
      ./DmMonitorServiceAPP start
      
    • 启动非确认监视器查看主备运行情况:

      /dm8/dminstall/bin/dmmonitor /dm8/dmdata/dmmonitor_0.ini
      

6. 在监视器上手动切换主备数据库(192.168.58.140)

1. 主备库切换

# 1、查看数据守护集群中的状态信息
show
 
# 2、查看grp1组中允许执行Switchover命令的备库,也就是查看数据守护集群组中可以进行切换的数据库实例
choose switchover grp1
 
# 3、选择NODE2备库切换为新的主库,将当前的主库切换为新的备库,此命令要求执行切换的主备库都是正常 Open 状态,另外执行此命令需要先登录监视器。
switchover grp1.NODE2
# 可以看到NODE2已经切换为了主库,NODE1切换为了备库。

步骤截图
在这里插入图片描述
在这里插入图片描述
这里要输入login,登录
在这里插入图片描述
在这里插入图片描述

2、主库故障时,指定备库接管故障的主库

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

步骤截图,断网后的的集群状态
在这里插入图片描述

出现主库故障时,需要优先使用 choose takeover [group_name] 选出可接管主库,并使用 takeover [group_name][.] [db_name] 执行正常接管。

如果不存在可以正常接管的备库,但又需要主库对外提供服务,可以考虑使用 choose takeover force [group_name] 选出可强制接管的备库,并使用 takeover force [group_name][.] [db_name] 进行强制接管。但是强制接管可能会导致数据一致性问题。

如果执行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

在这里插入图片描述
至此切换成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值