在日常运维中,可能会碰到主备集群发生脑裂或者备库不追的问题,这时候需要手动修复备库;而主库又不能停止服务,那么这时候就需要我们在不停止主库的情况下去修复备库。
具体步骤如下:
第一步,先在主库上进行联机热备的全量备份
SQL>backup database full to full_bak bakfile '/dmdata/dmdbms/data/DAMENG/bak/FULL/dbbak_full_20240514'
第二步,将主库的备份文件拷贝到备库
scp /dmdata/dmdbms/data/DAMENG/bak/FULL/dbbak_full_20240514 192.168.1.20:/dmdata/dmdbms/data/DAMENG/bak/FULL/
第三步,停止备库,进行还原
./dmrman CTLSTMT="RESTORE DATABASE '/dmdata/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmdbms/data/DAMENG/bak/FULL/dbbak_full_20240514'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmdbms/data/DAMENG/bak/FULL/dbbak_full_20240514'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
第四步 以mount状态启动备库,再修改备库模式
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
第五步 启动备库守护进程,这时候主备之间会自动同步数据并恢复正常了。
注意:如果是脑裂的情况,需删除分裂产生的dmwatcher.ctl文件。
文章
阅读量
获赞