达梦数据库读写分离集群异常测试(⾼可⽤)及双主(类似脑裂)问题处理

目录

测试前准备... 4

断电测试... 4

一、备库204断电... 4

二、断电数据新增测试... 5

1、备库204断电... 5

2、主库200新增数据,203备库查询正常... 5

3、204服务器启动并启动守护进程,测试,正常... 6

三、主库断电测试... 6

1、主库200关机... 6

2、监控208报错并自动切换... 7

3、203备库(现在主库),插入数据测试... 7

4、启动200原主库,开启守护进程,测试正常。... 7

5、切换主库到200服务器,切换成功,测试成功。... 8

断网测试... 9

一、主库断网测试... 9

1、主库200禁用网卡(仅禁用网卡)... 9

2、监控器显示自动切换主库... 10

3、插入数据测试... 10

4、启动200网卡,测试,出现类似脑裂(双主)原主库200状态mount 11

二、脑裂问题处理... 11

1、关闭确认监视器dmmonitor服务... 12

2、关闭备200节点dmwatcher服务;... 12

3、确认备节点dmserver服务是否为关闭状态:目前开启状态... 13

4、确认主节点服务是否正常:主节点204服务正常... 13

5、主节点联机备份;并复制到200异常服务器... 13

6、备份备节点配置文件(四个ini文件)... 13

7、删除备节点数据库;... 13

8、创建数据库并备份恢复... 13

9、修改配置文件,修改备节点200状态... 15

10、启动备节点数据库... 15

11、启动确认监视器,并查看运行情况。 服务正常... 15

12、测试... 16

13、主备切换--切换成功... 16

14、小结... 17

宕机测试... 17

一、主库宕机测试... 17

1、直接停库... 17

2、停守护进程,停库... 17

3、启动守护进程... 17

4、切换主备,成功... 18

二、备库宕机测试... 19

1、停守护进程、停库,208监控报错... 19

2、主库插入数据... 19

3、备库启动守护进程,服务正常... 19

测试前准备

测试集群的⾼可⽤(断电,断⽹,宕机等场景)

集群正常200主,203、204备 ,208监控

 

断电测试

一、备库204断电

1、重启服务器

shutdowm -r

208服务器报错超时

 

2、服务器重启后,启动守护进程

./dmwatcher /dm/data/DAMENG/dmwatcher.ini

 

3、启动监控服务

./dmmonitor /dm/data/DAMENG/dmmonitor.ini

4、登录数据库测试,正常。

 

二、断电数据新增测试

1、备库204断电

shutdowm

208服务器报错

 

2、主库200新增数据,203备库查询正常

 

 

3、204服务器启动并启动守护进程,测试,正常

./dmwatcher /dm/data/DAMENG/dmwatcher.ini

 

 

三、主库断电测试

1、主库200关机

shutdown

2、监控208报错并自动切换

 

3、203备库(现在主库),插入数据测试

 

4、启动200原主库,开启守护进程,测试正常。

 

 

5、切换主库到200服务器,切换成功,测试成功。

choose switchover grp1

switchover grp1.GRP1_RWW_01 --提示没有登陆

login

SYSDBA

SYSDBA

switchover grp1.GRP1_RWW_01

 

 

 

断网测试

一、主库断网测试

1、主库200禁用网卡(仅禁用网卡)

ip link set ens33 down

ip link set ens37 down

 

2、监控器显示自动切换主库

 

3、插入数据测试

 

4、启动200网卡,测试,出现类似脑裂(双主)原主库200状态mount

 

 

二、脑裂问题处理

1)添加冗余心跳线,减少脑裂发生机会。

2)启用磁盘锁,在发生脑裂时可以协调控制对资源的访问

3)设置仲裁机制(确认监视器)

DM防脑裂机制:1、多加了一条心跳线。2、加入互斥机制(dm.ini中记录主备ip,不允许主备机同时启动数据库实例) --我是没找到dm.ini中哪里有这个配置--貌似达梦6、7HA里面有,现在貌似HA基本很少用了。

防脑裂措施:

1)提供可靠的网络,网卡、交换机冗余

2)建议采用非自动切换模式

3)自动切换模式,需在第三台机器部署确认监视器

4)人工干预时,要确认原主机是否是活动状态。避免主库活动情况下,备库强制接管,人为造成脑裂。

dm.ini里面设置ALTER_MODE_STATUS=0 不允许人工更改数据库模式、状态及OGUID

数据库修复过程:

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

关闭确认监视器dmmonitor服务;

关闭备节点dmwatcher服务;

确认备节点dmserver服务是否为关闭状态;

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

主节点联机备份;

备份备节点配置文件;

删除备节点数据库,并恢复数据库;

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

启动备节点数据库;

启动备节点数据库守护服务;

启动确认监视器,并查看运行情况。

1、关闭确认监视器dmmonitor服务

ctrl+c

2、关闭备200节点dmwatcher服务;

--数据库服务还在跑

ctrl+c

ps -ef | grep dm

 

3、确认备节点dmserver服务是否为关闭状态:目前开启状态

4、确认主节点服务是否正常:主节点204服务正常

5、主节点联机备份;并复制到200异常服务器

backup database full backupset '/dm/bak/dave_full_05';

6、备份备节点配置文件(四个ini文件)

 

7、删除备节点数据库;

删库!!

su - dmdba

cd /dm8

./uninstall.sh -i

清空/dm8待用

貌似此时实例还在跑。。

应该先删除实例再删库

此次直接kill后rm删除

8、创建数据库并备份恢复

root

mount -o loop /opt/dm8_20230418_x86_rh6_64.iso /mnt

su - dmdba

cd /mnt

./DMInstall.bin -i

c --中文

n --不输入Key文件

y --设置时区 21

1 --典型安装

/dm8 --指定安装路径

y

root 用户

/dm8/script/root/root_installer.sh 创建 DmAPService,否则会影响数据库备份。

配置环境变量

cd /home/dmdba/

vim .bash_profile

添加

export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

su - dmdba

source .bash_profile

创建新的实例

./dminit path=/dm/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DAMENG INSTANCE_NAME=GRP1_RWW_01 PORT_NUM=15236

注册服务

cd /dm8/script/root

./dm_service_installer.sh -t dmserver -dm_ini /dm/data/DAMENG/dm.ini -p GRP1_RWW_01

 

备份恢复

su - dmdba

./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/bak/dave_full_05'"

./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/bak/dave_full_05'"

./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"

9、修改配置文件,修改备节点200状态

vim dm.ini

cp dmmal.ini DAMENG/

cp dmarch.ini dmwatcher.ini DAMENG/

开启数据库:

./dmserver /dm/data/DAMENG/dm.ini --第一次要先开启,后面再mount

./dmserver /dm/data/DAMENG/dm.ini mount

disql SYSDBA/SYSDBA@localhost:15236

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL>sp_set_oguid(453332);

SQL>alter database standby;

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

10、启动备节点数据库

--直接守护进程启动,会自动拉起服务

./dmwatcher /dm/data/DAMENG/dmwatcher.ini

11、启动确认监视器,并查看运行情况。 服务正常

./dmmonitor /dm/data/DAMENG/dmmonitor.ini

 

12、测试

204主库插入

insert into dept values(9,'Zzc');

commit;

200备库查询

 

13、主备切换--切换成功

choose switchover grp1

switchover grp1.GRP1_RWW_01 --提示没有登陆

login

SYSDBA

SYSDBA

switchover grp1.GRP1_RWW_01

 

14、小结

出现类似脑裂双主模式,需要停监控,停守护进程,停库,删库,重新创建数据库及备份恢复,修改四个ini文件,修改数据库状态及OGUID,启动守护进程,启动确认监视器。

宕机测试

一、主库宕机测试

1、直接停库

shutdown immediate;

208监控服务器报错后直接拉起。恢复正常

 

2、停守护进程,停库

ctrl+c

shutdown immediate;

208监控直接报错切换主备了

 

3、启动守护进程

--系统恢复200变为备库

./dmwatcher /dm/data/DAMENG/dmwatcher.ini

 

4、切换主备,成功

choose switchover grp1

switchover grp1.GRP1_RWW_01 --提示没有登陆

login

SYSDBA

SYSDBA

switchover grp1.GRP1_RWW_01

 

二、备库宕机测试

1、停守护进程、停库,208监控报错

 

2、主库插入数据

insert into dept values(10,'BDJ');

commit;

3、备库启动守护进程,服务正常

./dmwatcher /dm/data/DAMENG/dmwatcher.ini

达梦数据库社区地址:https://eco.dameng.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值