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

news/2024/11/22 20:23:01/

目录

测试前准备... 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


http://www.ppmy.cn/news/242131.html

相关文章

集成灶公认10大品牌有哪些?从这三方面轻松辨别品牌是否靠谱

集成灶公认10大品牌有哪些?这是很多消费者面对鱼龙混杂的集成灶市场发出的疑问。在选择集成灶产品时,如果不知道如何下手,不妨从销售额、企业影响力和产品创新力这三方面来进行辨别,这样就能够轻松了解它们是不是真的称得上是全国…

干货 | 提高步进电机运行质量的电流控制方法

A双极性步进电机的基础知识 双极性步进电机包含两绕组,为了使电机运行平稳,不断的给这两个线圈加以相位差90度的正弦波,步进电机就开始转动起来。 通常,步进电机不是由模拟线性放大器驱动;而是由PWM电流调节驱动&…

RockChip:Boot Mode(二)

一:recovery (key) 在无usb接入情况下,通过按压volume-up键再上电进入recovery模式。 由于loader mode的优先级高于recovery模式,故需要断开usb连接。 * rockchip_dnl_key_pressed(): * * (1) volume-up key (default) * (2) menu key (If no rockusb) * * Its possible t…

接口测试-使用mock生产随机数据

在做接口测试的时候,有的接口需要进行大量的数据进行测试,还不能是重复的数据,这个时候就需要随机生产数据进行测试了。这里教导大家使用mock.js生成各种随机数据。 一、什么是mock.js mock.js是用于生成随*机数据,拦截 Ajax 请…

【spring源码系列-03】xml配置文件启动spring时refresh的前置工作

Spring源码系列整体栏目 内容链接地址【一】spring源码整体概述https://blog.csdn.net/zhenghuishengq/article/details/130940885【二】通过refresh方法剖析IOC的整体流程https://blog.csdn.net/zhenghuishengq/article/details/131003428【三】xml配置文件启动spring时refres…

常见的内存数据库有哪些

Redis:键值存储数据库,常用于缓存、消息代理和应用程序数据处理。 Memcached:分布式内存对象缓存系统,用于缓存Web应用程序数据。 VoltDB:高速内存数据库,用于实时数据处理和实时决策。 Aerospike&#…

内存和硬盘的区别

一、定义 内存:内存又称主存,计算机中的程序的运行都是在内存中进行的,只有计算机在运行,计算机CPU就会把需要的计算数据调到内存中进行运算。通常内存分为随机存储器(RAM)、只读存储器(ROM&…

服务器ddr3和ddr3性能对比,内存DDR4与DDR3哪个好 ddr3和ddr4性能差多少

在PC领域中,DDR3内存已经占据了市场多年,大约2014年底,DDR4内存慢慢走入用户的视野,网络上到处有关于DDR4内存文章,不过那时还没有实现普及,直到2016年才逐渐成为主流。而intel六代平台就处于DDR3至DDR4过渡阶段,为了顾及广大用户,六代Skylake架构处理器集成了双控制器…