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

news2024/11/27 14:30:26

目录

测试前准备... 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.coloradmin.cn/o/615627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python使用requests+excel进行接口自动化测试(建议收藏)

前言 在当今的互联网时代中,接口自动化测试越来越成为软件测试的重要组成部分。Python是一种简单易学,高效且可扩展的语言,自然而然地成为了开发人员的首选开发语言。而requests和xlwt这两个常用的Python标准库,能够帮助我们轻松…

archive log list :报错的解决办法

装好oracle数据库之后, 没事在练习sql语句, 看看一些基本的字典表啊啥的 但是当我执行 archive log list这个的时候居然给我报错, 这句话的意思是: 查看数据库的备份和恢复策略,并确定归档文件的具体位置&#xff…

小觅相机去畸变--Apriltag标签检测--Apriltag_ros

小觅相机型号:深度版,视场角50 ROS版本:nodelet 1.使用Calibrator获取相机的标定参数,或者用小觅相机自带的sdk获取: calibrator可以参考:ROS系统-摄像头标定camera calibration 小觅自带sdk参考:获取图像标定参数 或者小觅的ROS包编译后,会生成 这个get_img_para…

请求从前端到后端跟踪调试

请求慢的原因很多,当出现前端反应接口慢时,而通过后端日志查看请求处理时间并不慢时,往往会手足无措,当面对网络问题出现手足无措时,这就是在提醒你该抓包分析了,那么一般如何根据抓包文件去分析慢请求呢&a…

【MySQL】数据库报错集

一. 报错列表 1.1. Out of range value for column “xx” at row x 阐述:第 “x” 行的列 “xx” 超出范围 原因:建表时,类型bigint且长度20,如下字段的值超过其可输入的范围了 解决:修改该值为该列所设的长度即可 …

Cookie和Session原理详解

目录 前言 Cookie Session 会话机制 Cookie和Session的区别 Servlet中对Session和Cookie的封装 代码实例:实现用户登录 约定前后端交互的接口 前端页面: 后端实现 login index 总结 前言 在web的发展史中,我们知道浏览器和服务…

【模拟电子技术】理论考核回顾

写在前面: 1:好好学习,早日学会看B站华成英老师的课,不然就会像我一样最后快挂科了。 2:杂谈:我觉得一个“智者”可以因为我不会做题来侮辱我的智商,但是不能借此侮辱我没好好复习。 3&#…

AI换脸(支持视频换脸,支持cpu、低算力)【附代码】

可直接选择一张人脸去替换另一张图片或者视频中的人脸。本项目仅提供人脸替换部分,不需要数据集,不用训练! 目录 项目说明 环境说明 准备工作 如何使用 免责声明 项目说明 本项目参考源码:GitHub - s0md3v/roop: one-click…

[数据结构 -- 手撕排序算法第一篇] 堆排序,一篇带你搞懂堆排序

目录 1、堆的应用 -- 堆排序 1.1 堆排序的思路分析 2、建堆 2.1 向上调整建堆:O(N*logN) 2.1.1 向上调整代码 2.1.2 向上调整建堆代码 2.2 向下调整建堆:O(N) 2.2.1 向下调整代码 2.2.2 向下调整建堆代码 3、堆排序实现代码 4、堆排序测试 1、…

一文读懂Serverless,它到底有啥用?

各位ICT的小伙伴好呀。 Serverless是最近大家讨论很多的一个话题。 今天我们就来聊聊什么是Serverless? ▉ Serverless是个啥? Server:服务器,Serverless解决问题的产品。 less:更少,Serverless解决问题…

如何解决空指针异常

NPE异常相信 Java 程序员都很熟悉,是 NullPointerException 的缩写;最近业务需求开发的有点着急,测试环境就时不时的来个NPE异常,特别的头疼;作为出镜率最高的异常之一,一旦入行Java开发,可以说…

微服务网关、SpringBoot、Nginx、tomcat8配置跨域

微服务网关、SpringBoot、Nginx、tomcat8配置跨域 跨域是什么?为什么会跨域解决跨域微服务网关处理跨域springboot项目配置跨域nginx配置跨域tomcat8配置跨域 跨域是什么? 跨域是A端向B端发送请求,A端与B端的地址协议、域名、端口三者之间任意一个不同&#xff0c…

Tomcat的优化

Tomcat的优化 一、Tomcat 优化Tomcat 配置文件参数优化 二、系统内核优化三、Tomcat 配置 JVM 参数:参数含义 一、Tomcat 优化 Tomcat默认安装下的缺省配置并不适合生产环境,它可能会频繁出现假死现象需要重启,只有通过不断压测优化才能让它…

吴恩达联手OpenAI的免费课程笔记—面向开发人员的 ChatGPT 提示工程

目录 前言一、大语言模型介绍二、提示指南2-0、导入API key和相关的python库2-1、写清楚的、具体的提示2-1-1、使用分隔符清楚的指示输入的不同部分2-1-2、要求结构化的输出2-1-3、按照指定的条件输出2-1-4、少样本学习 2-2、给模型时间去思考2-2-1、指定完成任务所需要的具体步…

软件外包开发UI管理工具

软件在开发前需要设计UI界面,UI界面是产品经理和开发人员、测试人员之间的交流工具,因此项目中会有多人的工作涉及到的UI界面,这就需要有个好的工具协调相互之间的工作。今天和大家分享一些常用到的工具,希望对大家的工作有所帮助…

插件框架PF4J-从理论到实践

PF4J:Plugin Framework for Java 目录 是什么? 不是什么? 特点 组件 主要类 流程概述 spring-pf4j 思考 功能模块化 我对pf4j的封装和使用demo GitHub - chlInGithub/pf4jDemo: pf4j demo 是什么? 开源轻量级的插件框架。通过插件…

三相三线、三相四线、三相五线制区别

三相三线、三相四线、三相五线制区别 1、三相三线2、三相四线3、三相五线4、三相三线和三相四线的区别5、三相四线和三相五线的区别 1、三相三线 由A、B、C这3根相线俗称火线组成,没有布置零线N和接地线PE,这种布线方式常见于交流380V的上一级10KV的系统…

Maven安装教程

maven环境配置(点击此电脑右键属性): 点击高级系统设置,点击环境变量: 开始配置环境变量(点击系统变量,新建按钮): 新建系统变量:MAVEN_HOMED:\maven\apac…

vueX学习看这篇就够了

vuex就是为了实现全局状态管理 vuex有哪些东西? state【状态】getter【可以认为是 store 的计算属性,不会修改状态】mutation【唯一修改state的方法,不支持异步】action【不能直接修改state,通过触发mutation修改状态,支持异步】…

GPT聊天功能,逐字返回数据

目录 前言一、前端二、后端1.接收前端请求的api如下是继续向其他接口请求的api如下是直接返回前端数据的api甚至可以返回图片 2.模拟GPT的接口 前言 我们在和GPT交流的时候发现GPT总是逐字的显示,因为GPT是一种基于神经网络的自然语言处理模型,它的训练…