达梦8-数据守护集群主备故障实验和脑裂处理

实验1:将内网断开,查看主备库状态,并测试数据同步情况

测试环境

##主库信息

内网IP-[MAL_HOST = 192.168.50.100]

外网IP-[MAL_INST_HOST = 192.168.101.11]

主库实例名-[DM01]
##备库信息

内网IP-[MAL_HOST = 192.168.50.110]

外网IP-[MAL_INST_HOST = 192.168.101.22]

备库实例名-[DM02]

主备库状态

在备库配置dm_svc.conf服务名-【DM】

在备库使用服务名登录:

此时直接连接到主库的实例。

测试-断开主库的内网,将主库的内网网卡关闭。网卡名称-[ens36]

查看主库和备库的监视器信息

打开监视器:

/opt/dmdbms/bin/dmmonitor /data/dmdata/DAMENG/dmmonitor.ini

主库

备库

使用"show"命令查看主备库状态

主库:

备库:

使用配置的服务名,在备库连接,创建表,进行数据查询

因为只有内网发生故障,主库的实例正常,使用外网连接实例可以正常操作。

登录备库实例查询,看数据是否同步。

因为内网连接断开,主库的redo日志信息不能同步到备库。所以备库不能查到相应的数据。

实验2:主备集群脑裂

制造脑裂环境

主库故障,备库强制接管故障primary主库(原备库,现主库)。

takeover force GRP1.DM02

注意
执行Takeover Force有可能引发组分裂,而Takeover命令是在确保不会产生组分裂情况下才允许执行。

故障主库恢复正常(原主库,现备库)重新加入集群,此时原主库出现脑裂问题。

数据守护 V4.0 对守护进程控制文件(dmwatcher.ctl)进行了简化,仅用于记录本地数据库的分裂状态和分裂描述信息。守护进程在检测到本地库分裂时,自动创建 dmwatcher.ctl 文件,保存在本地库的 SYSTEM_PATH 路径下,并且文件中记录的状态一定是 Split 分裂状态。如果 dmwatcher 加载到 dmwatcher.ctl 文件,则认为对应的库一定是分裂状态。如果需要对分裂库进行重建,则需要手动将 dmwatcher.ctl 文件删除,否则守护进程仍然会认定本地库为分裂库。

守护进程控制文件仅包含版本号、状态及分裂描述信息这三项内容。

状态字段包含以下两种:

  • 有效(VALID) 正常运行时状态。

  • 分裂(SPLIT) 数据和有效主库的数据不一致时设置。

主备库关闭DmWatcher 、DMserver

注意当前的主库是DM02,备库是DM01

主库DM02-主机dmdb02

备库DM01-主机dmdb01

备库删除当前实例,保留配置文件

复制代码
cd /data/dmdata/DAMENG
cp *.ini /data
rm -rf DAMENG

备库重新初始化实例

复制代码
[dmdba@dmdb01 data]$ cd /opt/dmdbms/bin
[dmdba@dmdb01 bin]$ ./dminit PATH=/data/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=256 CHARSET=1 CASE_SENSITIVE=1 SYSDBA_PWD=Dameng123 INSTANCE_NAME=DM01

主库进行物理备份

复制代码
[dmdba@dmdb02 bin]$ ./dmrman
dmrman V8
RMAN> backup database '/data/dmdata/DAMENG/dm.ini' full to bak_full backupset '/data/dmbak/bak_full';

主库将备份文件和归档文件传输到备库

复制代码
scp -r /data/dmbak/bak_full/ dmdba@192.168.101.11:/data/dmbak/

备库进行恢复

复制代码
[dmdba@dmdb01 bin]$ ./dmrman

RMAN> restore database '/data/dmdata/DAMENG/dm.ini' from backupset '/data/dmbak/bak_full';

RMAN> recover database '/data/dmdata/DAMENG/dm.ini' from backupset '/data/dmbak/bak_full';

RMAN> recover database '/data/dmdata/DAMENG/dm.ini' update db_magic;

修改备库状态

备库实例启动到mount状态

复制代码
[dmdba@dmdb01 bin]$ ./DmServiceDM01 start mount

[dmdba@dmdb01 bin]$ ./disql sysdba/Dameng123

服务器[LOCALHOST:5236]:处于主库配置状态

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

SQL> sp_set_oguid(45335);

SQL> alter database standby;

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

主备库依次启动DmServer、DmWatcher

复制代码
[dmdba@dmdb01 bin]$ pwd
/opt/dmdbms/bin

主库
./DmServiceDM02 start
备库
 ./DmServiceDM01 restart
主库
./DmWatcherServiceDM02 start
备库
./DmWatcherServiceDM01 start

登录非确认监视器,查看集群主备库状态

当前的主备库已恢复正常。

若想将主备切换回去时,只需要启动非确认监视器执行切换命令-switchover命令。

##切换指定组的指定库为Primary库

switchover [group_name[.]] [db_name]
##使用指定组的指定库接管故障Primary库

takeover [group_name[.]] [db_name]
##使用指定组的指定库强制接管故障Primary库

takeover force [group_name[.]] [db_name]

相关推荐
Databend34 分钟前
如何打造AI时代的数据基石 | Databend Meetup 上海站
数据库
老华带你飞1 小时前
海产品销售系统|海鲜商城购物|基于SprinBoot+vue的海鲜商城系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·海鲜商城购物系统
合作小小程序员小小店1 小时前
桌面开发,在线%超市销售管理%系统,基于vs2022,c#,winform,sql server数据
开发语言·数据库·microsoft·c#
SelectDB1 小时前
字节跳动:Apache Doris + AI 一站式融合数据引擎的探索与实践
数据库·apache
IvorySQL2 小时前
PostgreSQL 18 - 时间约束 (Temporal Constraints)
数据库·postgresql·开源
q***61412 小时前
从MySQL迁移到PostgreSQL的完整指南
数据库·mysql·postgresql
N***73852 小时前
SQL锁机制
java·数据库·sql
小羊在奋斗3 小时前
MySQL表的约束:从基础到核心(附场景+案例)
android·数据库·mysql
Wang's Blog3 小时前
MongoDB小课堂: 文档查询之匹配查询与比较操作符深度解析
数据库·mongodb
cookqq3 小时前
mongodb根据索引IXSCAN 查询记录流程
数据结构·数据库·sql·mongodb·nosql