【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数据库

    图 264

    shutdown 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

    图 273

    Switchover回切

  • 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
分享
二维码
海报
【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……
<<上一篇
下一篇>>