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