注册
在线切换异步备机和实时备机以及本地切换命令SWITCHOVER_LOCAL功能验证
专栏/培训园地/ 文章详情 /

在线切换异步备机和实时备机以及本地切换命令SWITCHOVER_LOCAL功能验证

电量仅剩百分五 2026/09/18 59 0 0
摘要

测试目的

目前较多系统使用数据守护集群,偶尔会有项目上想将实时备库或即时备库与异步备库转化的需求,测试验证实时备库转为异步备库和异步备库转为实时备库的操作流程 验证switchover_local命令的可行性。

数据库版本

DM Database 64 V8 03134284639-20260811-342271-20151

测试内容

实时备库转为异步备库

打开TIMER_INI参数

环境准备,先搭建好实时主备集群
image.png
支持动态开启TIMER_INI
SP_SET_PARA_VALUE(1,'TIMER_INI',1);
image.png
image.png

配置定时器

配置一个一分钟一次的定时器
SP_ADD_TIMER('RT_TIMER',2,1,0,1,'00:00:00','23:59:00','2011-02-01 14:30:34', '9999-12-31',1,'RT_TIMER',1);
image.png
image.png

:在线配置定时器,暂时最多支持分钟级的,秒级的定时器配置需要停库并更改dmtimer.ini(测试在线修改dmtimer.ini并开关TIMER_INI参数未生效).

关闭所有节点数据守护进程

守护进程处于活动状态时,删除实时备库会进入故障处理流程,主库会有短暂挂起,故须先关闭守护进程
image.png

主库设置实时备库归档无效

停止实时备库的归档同步
SP_SET_ARCH_STATUS('DM_02',1);
image.png

主库删除实时备库

ALTER DATABASE DELETE ARCHIVELOG 'DEST=DM_02';
image.png

主库添加到备库的异步归档

添加异步归档
ALTER DATABASE ADD ARCHIVELOG 'DEST=DM_02,TYPE = ASYNC, ARCH_TIMER_NAME = RT_TIMER';
image.png
查看归档配置
SELECT ARCH_NAME,ARCH_TYPE,ARCH_DEST,ARCH_TIMER_NAME,ARCH_IS_VALID FROM V$DM_ARCH_INI;
image.png

备库删除主库实时归档

ALTER DATABASE DELETE ARCHIVELOG 'DEST=DM_01';
image.png

修改数据守护配置至local并启动

如果没有其他实时备库或即时备库,主库也要修改守护进程配置为local。
如果还存在有其他实时备库或即时备库,仅修改异步备库守护进程配置即可。
image.png

观察主备状态

监视器查看集群状态
image.png
:当库内没有日志产生时,主库实例日志中并不会每分钟出现一次该日志条目,因为没有日志需要同步。

结论及注意事项

目前数据库已支持在线转换实时备库或即时备库至异步备库,测试结果符合预期。
主要注意的是:

  1. 如果之前没配置过dmtimer.ini定时器,是可以在线配置定时器,但是目前仅支持最多分钟级别,秒级别的话就需要停库配置dmtimer.ini(测试在线修改dmtimer.ini并开关TIMER_INI参数未生效)
  2. 改动归档配置之前,必须先关停守护进程,守护进程存在的情况下在失效归档时会被守护进程恢复有效状态,且守护进程在时,删除实时归档会导致主库有挂起动作(被守护进程检测进入故障处理)。

用SWITCHOVE_LOCAL进行本地切换

###环境准备
环境准备
环境准备,先搭建好一主一异步备机

image.png
###前置调条件
切换前置条件,主库dmarch.ini中 ARCH_SEND_MODE=1 该参数在主库中才有效,查询V$DM_ARCH_INI视图,主库节点显示为1.异步备机节点显示为null。
image.png
异步备库dmarch.ini中需要添加原主库以及主库上其他备份的归档,且ARCH_SEND_MODE=1
image.png
否则执行,执行SWITCHOVER_LOCAL会出现保报错
image.png
:如果新增这些参数信息,需要重启数据库服务才能生效
###切换操作
执行SWITCHOVER_LOCAL
image.png
image.png
通过监视检查确认切换成功

异步备库转为实时备库

闭所有节点数据守护进程

image.png
image.png

主库删除异步备库

删除异步归档:
ALTER DATABASE DELETE ARCHIVELOG 'DEST=DM_02';
image.png
查看归档配置:
SELECT ARCH_NAME,ARCH_TYPE,ARCH_DEST,ARCH_TIMER_NAME,ARCH_IS_VALID FROM V$DM_ARCH_INI;
image.png
:在线删除异步备库不需要提前设置无效。

主库添加到备库的实时归档

添加实时归档:
ALTER DATABASE ADD ARCHIVELOG 'DEST=GRP1_DW_02,TYPE = REALTIME';
image.png
查看归档配置:
SELECT ARCH_NAME,ARCH_TYPE,ARCH_DEST,ARCH_TIMER_NAME,ARCH_IS_VALID FROM V$DM_ARCH_INI;
image.png
:因为实时备库和即时备库的集群加入动作需要守护进程的干预,所以暂时为无效状态

原异步备库添加主库实时归档

删除异步归档:
ALTER DATABASE DELETE ARCHIVELOG 'DEST=DM_01';
image.png
添加实时归档:
ALTER DATABASE ADD ARCHIVELOG 'DEST= DM_01,TYPE = REALTIME';
image.png
查看归档配置:
SELECT ARCH_NAME,ARCH_TYPE,ARCH_DEST,ARCH_TIMER_NAME,ARCH_IS_VALID FROM V$DM_ARCH_INI;
image.png
:因为实时备库和即时备库的集群加入动作需要守护进程的干预,所以暂时为无效状态

修改数据守护配置至GLOBAL并启动

实时主备库的守护进程配置类型都要是GLOBAL模式
image.png
image.png

观察主备状态

监视器查看集群状态
image.png
再次查看主库归档状态
查看归档配置:
SELECT ARCH_NAME,ARCH_TYPE,ARCH_DEST,ARCH_TIMER_NAME,ARCH_IS_VALID FROM V$DM_ARCH_INI;
image.png

测试主备切换

监视器执行切换命令,验证主备功能
在实时主备集群中,不能使用SWITCHOVER_LOCAL命令进行切换
image.png
使用switchover命令进可以正常进行切换
image.png

测试结论

测试可在线进行实时备库或即时备库于异步备库的相互转换,测试结果符合预。
新引入的switchover_local命令可以支持直接将异步备机切换为主机。但是使用该命令需要满足主节点的dmarch.ini设置ARCH_SEND_MODE=1,备机dmarch.ini中需要有主库节点及主库上所有其他节点的归档信息。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服