【Oracle】12C RAC系列之03 Switchover主备切换与回切
SwitchOver 测试
- 切换
switchover主备互换:
主库和备库相互转换角色。不会丢失数据。
failover故障转移:
当主库不可用,将standby转换为primary。最大保护模式和
最大可用模式下,可以保证不丢失数据。 - 由于DG与RAC的角色发生互换,下文中会使用用主机名mrzhu*区别主备关系
switch over切换
- 1阶段:主库RAC->备库
在此阶段,mrzhu03临时具有2个备用数据库 - 2阶段:备库mrzhu03->主库
- 切换完成后,主库为mrzhu03,备库为mrzhu01与mrzhu02组成的rac
启动所有节点数据库实例
- 任意RAC节点,grid账户下
srvctl start database -d mrzhu - 查看所有节点与DG的数据库角色
select name,database_role from v$database;
图 248
图 249 - DG角色为物理备库
图 250配置Fal参数
- 前面已配置,详情见[RAC ADG部署之 FAL参数配置]
- 在N1上,fal参数被用来配置备库的,从哪个库上拉取数据,fal_server就设置谁
图 251设置convert反向参数
- 在N1上
alter system set db_file_name_convert=\'/u01/app/oracle/oradata/sbdb\',\'+DATA/mrzhu/datafile\',\'/u01/app/oracle/oradata/sbdb\',\'+DATA/mrzhu/tempfile\' scope=spfile sid=\'*\'; alter system set log_file_name_convert=\'/u01/app/oracle/oradata/sbdb\',\'+DATA/mrzhu/onlinelog\' scope=spfile sid=\'*\';主库添加standby redo log
alter database add standby logfile thread 1 group 11 (\'+DATA\') size 200M; alter database add standby logfile thread 1 group 12 (\'+DATA\') size 200M; alter database add standby logfile thread 1 group 13 (\'+DATA\') size 200M; alter database add standby logfile thread 2 group 14 (\'+DATA\') size 200M; alter database add standby logfile thread 2 group 15 (\'+DATA\') size 200M; alter database add standby logfile thread 2 group 16 (\'+DATA\') size 200M;查看主库状态是否能转换为备库
select name,database_role,switchover_status from v$database;
图 252 - 查看备库
图 253查看N1主库GAP情况
图 254 - 看表确认no gap
执行切换前确认同步应用正常
- 确认RAC与DG同步功能正常
图 255
insert into zhu values(5200);
commit;
图 256 - 在DG上确认是否同步成功
图 257执行切换指令
- 在主库上查看所有实例状态:
- select status from gv$instance;
图 258 - 主库上依次单行执行以下命令
alter database switchover to sbdb verify; #检查是否可以切换如有报错加force参数强制执行 alter database switchover to sbdb; #依靠DBlink切换 alter database switchover to sbdb force;
图 259 - 退出sqlplus发现N1 N2实例已经自动关闭
` select status from v$instance;`
图 260
图 261 - 退出mrzhu03库后再登录,发现库是mount状态
select status from v$instance;
图 262启用新备库N1
- N1上
startup
图 263 - 关闭旧的DG备库即mrzhu03数据库
图 264shutdown immediate; - 查看N1角色,变为物理备库
select name,open_mode,database_role,protection_mode,protection_level,switchover_status from v$database;
图 265
在N1打开实时日志数据同步alter database recover managed standby database disconnect;
图 266打开新主库mrzhu03
- 查看角色
startup select name,open_mode,database_role,protection_mode,protection_level,switchover_status from v$database;
图 267测试切换后的数据同步
插入表数据
- 测试mrzhu03(新主库)插入数据,N1是否会同步
insert into zhu values(800); commit;
图 268
启动N2实例
图 269查看表同步情况
- 查看N1 与N2的表是否同步(参数未优化需等待2-3min),发现同步失败
排查switchover后同步问题处理
- 检查tns通信,无问题
- 查看archive_dest参数报error,无法识别tns参数,检查所有tns相关的参数配置。
- 拍错命令,备库N1上
set line **200**; set pagesize **2000**; select dest_id,status,error from v$archive_dest; - 检查mrzhu03的dest2通道参数发现
图 270 - 修改后查看archive_dest参数恢复正常不在error
图 271 - 在新备库N1,N2上确认同步成功
图 272
图 273Switchover回切
- mrzhu03:主变备库
- mrzhu01、02:备变主库
检查mrzhu03主库回切状态
- 保证采取备库-主库的开启顺序且开启了实时redo日志apply,否则会日志不同步而报错
- 在mrzhu03主库上执行
alter database switchover to mrzhu verify;
图 274执行回切指令
- 在主库mrzhu03上执行“switch to 备库名(N1、N2的数据库name)”完成回切
alter database switchover to mrzhu;
图 275 - 执行成功后,备库mrzhu03为关闭状态,主库mrzhu01 mrzhu02为mount状态
启动回切后的备库mrzhu03
- 在mrzhu03上先退出sqlplus
图 276 - 查看主库mrzhu01、02状态为mount
图 277 - mrzhu02上重启实例并open实例mrzhu02:
shutdown immediate startup alter database open; - 在mrzhu03上开启实时同步(在一个rac节点配置2个节电都生效)
alter database recover managed standby database disconnect;
图 278检查回切后的同步功能
- 在mrzhu01上使用表进行测试
insert into zhu values(1000000000); commit;
图 279 - mrzhu03上
select * from zhu;
图 280 - 到此回切数据同步测试成功
生产环境中的switchover切换优化
- 如果是生产环境,数据库数据较大,切换的时候时间会很长,主备库在关机的时候可以执行一下指令再关机
alter system flush buffer_cache; alter system checkpoint; shutdown immediate
转载请注明-MrZ-个人博客
THE END
0
二维码
海报
【Oracle】12C RAC系列之03 Switchover主备切换与回切
目录1 SwitchOver 测试1.1 switch over切换1.1.1 启动所有节点数据库实例1.1.2 配置Fal参数1.1.3 设置convert反向参数1.1.4 主库添加standby redo log1.1.5 查看主库状态是否能转换为备库1.1.6 查看N1主库GAP情况1……

































共有 0 条评论