注册
数据守护集群组分裂的处理方法
专栏/技术分享/ 文章详情 /

数据守护集群组分裂的处理方法

造物主 2023/12/22 1193 0 0
摘要

一、什么是组分裂
同一守护进程组中,不同数据库实例的数据出现不一致,并且无法通过重演 Redo日志重新同步数据的情况,称为组分裂。引发组分裂的主要原因包括:

  1. 即时归档中,主库在将Redo日志写入本地联机Redo日志文件之后,发送 Redo日志到备库之前出现故障,导致主备库数据不一致,为了继续提供服务,执行备库强制接管。此时,当故障主库重启后,就会引发组分裂。
  2. 故障备库重新完成数据同步之前,主库硬件故障,并且长时间无法恢复;在用户接受丢失部分数据情况下,为了尽快恢复数据库服务,执行备库强制接管,将备库切换为主库。
    此时,如果故障主库重启,也会造成组分裂。
    检测到组分裂后,守护进程会修改控制文件为分裂状态,被分裂出去的数据库需要通过备份还原等技术手段重新恢复。

二、处理方法

1、停止数据库服务
通过监视器查看目前谁是主库且open状态的,然后在按照达梦数据库数据守护集群的顺序停止整个集群,口诀为“备主主备”,即:
(1)关闭备上的守护进程;
(2)关闭主机的守护进程;
(3)关闭主机上数据库的进程;
(4)关闭备机上数据库的进程;
2、备份数据
在查询到主库的上面进行数据备份,切换到dmdba用户,使用dmrman命令如:
./dmrman CTLSTMT="BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/opt/dmdbms/data/full0916'"
再备份文件拷贝的异常的备库上面:
scp -r /opt/dmdbms/data/full0916 IP地址:/opt/dmdbms/data
3、在异常的备库上还原
切换到dmdba用户下面,使用dmrman命令进行操作:
./dmrman CTLSTMT="RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/full0916'"
./dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/full0916'"
./dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
4、启动备机的实例进程,登录数据库然后执行以下命令:
./disql SYSDBA/密码 --回车
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453332);
SQL>alter database standby;
SQL>exit;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
5、启动主机的实例进程和守护进程
6、启动刚刚还原好的备库守护进程

三、启动监视器

监视器启动完成之后,在日志看了一下FLSN是否一致,且RSTAT都是VALID状态,如果以上都正确,那么数据守护集群恢复正常。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服