前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DG】DataGuard角色转换(Switchover、Failover)及snapshot

【DG】DataGuard角色转换(Switchover、Failover)及snapshot

作者头像
甚至熊熊
发布2021-04-22 17:26:22
1.5K0
发布2021-04-22 17:26:22
举报

DG的主备角色转换分为:Switchover和Failover。Switchover适用于某些场合,需要将备库转为主库,Failover则是在主库故障无法使用情况下,将备库提升为主库。

  • switchover是有计划的,正常的切换,不会破坏数据库DG关系
  • failover是非计划的,破坏性的切换,切换之后要重建DG

一、Switchover操作步骤

大致步骤为主库先转换为备库,在此阶段可能看到原先的主备皆为备库状态,然后再将原备库设置为主库

1.主库操作

  1. 检查是否已经添加standby redo log
--standby redo log数量应等于redo数量 +1
select * from v$standby_log
  1. 检查主库状态
--SWITCHOVER_STATUS转换状态:to standby和session active(有会话连接),这两种状态可以转换
select NAME,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;
  1. 检查主备之间是否有GAP
--dest_id:1主库 2备库
select STATUS, GAP_STATUS from v$archive_dest_status t where DEST_ID = 2;
  1. swithover切换(主库执行完毕实例会自动关闭)
alter database commit to switchover to physical standby;

--当有会话连接的情况下,执行上面命令会失败,需要用这一条
alter database commit to switchover to physical standby with session shutdown;
  1. 启动数据库
startup;

--检查当前数据库状态,此时应看到已经是read only,且是PHYSICAL STANDBY状态
select open_mode,database_role from v$database; 

--开启实时应用
alter database recover managed standby database using current logfile disconnect;

2.备库操作

  1. 检查状态
--同主库一样,SWITCHOVER_STATUS是to primary或session active就可以切换
select NAME,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;
  1. 执行切换(执行后为mounted状态)
alter database commit to switchover to primary;
alter database commit to switchover to primary with session shutdown;
  1. 重启数据库
  2. 测试同步

3.注意事项

  • 生产环境切换时间会长,考虑执行alter system flush buffer_cache,将内存数据刷到磁盘
  • 写检查点alter system checkpoint
  • 考虑先关闭应用,无用户连接可以减少切换的时间

二、Failover操作步骤

  1. 停止备库日志应用
alter database recover managed standby database cancel;
  1. 关闭备库的日志传输
alter database recover managed standby database finish force;

--主备之间有gap的情况下,使用上一条语句可能会不成功,则需要执行这条语句
alter database active physical standby database;
  1. 切换到primary
alter database commit to switchover to primary with session shutdown;
  1. 重启数据库
shutdown immediate
  1. 查询数据库状态
select open_mode,database_role from v$database;

三、snapshot快照数据库

简单讲就是可以将备库置于可读写的模式,可以用于模拟上线测试等,测试完成可以再切回备库模式,测试阶段产生的数据以及做的修改都会还原回去。

需要注意的是:

  • 切换到快照数据库后,备库可以接收主库的日志,但是不能进行apply应用,必须切换回物理备库才能再应用
  • snapshot快照数据库的原理实际上是:使用还原点,闪回的功能
  • 只能在物理备库下使用
  • 最高保护模式下不能转换
  • snapshot必须在读写模式至少打开open一次,才能转换回物理备库

操作步骤:

1.备库配置快速恢复区

快照数据库需要快速恢复区来存储一些信息

--先设置db_recovery_file_dest_size,再设置db_recovery_file_dest,提前创建好路径
alter system set db_recovery_file_dest_size=5g;
alter system set db_recovery_file_dest='/oracle/flash';

2.关闭日志应用

alter database recover managed standby database cancel;

3.切换snapshot快照数据库

--设置后数据库会变成mount状态,
alter database convert to snapshot standby;  
alter database open
select open_mode,database_role from v$database;

4.快照数据库切回物理备库

--关闭备库并置于mount状态
shutdown immediate
startup mount

--执行命令
alter database convert to physical standby;
shutdown immediate
startup

--实时应用,现在查看之前操作过的数据都变回修改前了
alter database recover managed standby database using current logfile disconnect
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据库学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Switchover操作步骤
    • 1.主库操作
      • 2.备库操作
        • 3.注意事项
        • 二、Failover操作步骤
        • 三、snapshot快照数据库
          • 1.备库配置快速恢复区
            • 2.关闭日志应用
              • 3.切换snapshot快照数据库
                • 4.快照数据库切回物理备库
                相关产品与服务
                数据库
                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档