dataguard 主备切换方式switchover 和 failover 操作步骤

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG数据库运维(如安装迁移,性能优化、故障应急处理等)
公众号:老苏畅谈运维
欢迎关注本人公众号,更多精彩与您分享。

dataguard 切换方式有两种方式:switchover 和 failover。
(1)Switchover :无损转换,通常是用户手动触发或者有计划的让其自动触发,比如硬件升级、软件升级之类的。switchover是有计划的,正常的切换,不会破坏数据库DG关系。
通常它给你带来的工作量非常小并且都是可预计的。其执行分两个阶段,第一步,primary 数据库转换为standby 角色,第二步,standby 数据库转换为 primary 角色,primary 和 standby 只是简单的角色互换。

  • 切换过程:主库->切换->备库->检查状态->原备库->切换->主库->再检查状态
  • 应用场合:主库需要调整升级,主库性能不佳,这时可以切换后用新主库对外提供服务
  • 是否丢失数据:不会丢失数据

(2)Failover :不可预知原因导致 primary 数据库故障并且短期内不能恢复就需要 failover,failover是非计划的,破坏性的切换,切换之后要重建DG。
所谓failover,它是一种丢弃切换,直接把备库切换成主库,原主库自动丢弃,也就是不在属于DG架构的一部分了。

  • 切换过程:备库->切换->主库->检查状态,原主库脱离DG架构
  • 是否丢失数据:极有可能丢失数据,我们的目标就是损失降到最低
  • 如果在failure之前是maximum protection or maximum availability模式,会丢失数据
  • 挽救措施:重建主库使用原来备份恢复主库

一、Switchover操作步骤

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

1.主库操作

注意事项:

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

–检查是否已经添加standby redo log
–standby redo log数量应等于redo数量 +1
select * from v$standby_log

–检查主库状态
–SWITCHOVER_STATUS转换状态:to standby和session active(有会话连接),这两种状态可以转换
select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;

–检查主备之间是否有GAP
–dest_id:1主库 2备库
select STATUS, GAP_STATUS from v$archive_dest_status t where DEST_ID = 2;

–swithover切换(主库执行完毕实例会自动关闭)
alter database commit to switchover to physical standby;

–当有会话连接的情况下,执行上面命令会失败,需要用这一条
alter database commit to switchover to physical standby with session shutdown;

–启动数据库
startup;

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

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

2.备库操作

–检查状态
–同主库一样,SWITCHOVER_STATUS是to primary或session active就可以切换
select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;

–执行切换(执行后为mounted状态)
alter database commit to switchover to primary;

alter database commit to switchover to primary with session shutdown;

–打开数据库
alter database open;

3.测试同步

测试主备切换的数据同步情况。

二、Failover操作步骤

注意事项:
1.failover操作之后,会自动丢弃原主库不在是DG一部分
2.如果你有多个备库,其他备库也会自动脱离DG,也不需要做shutdown 和 restart 动作。当有了新主库之后可以根据需要重新创建所有备库
3.我们推荐使用命令行的方式进行failover操作
4.不能在备库接收日志情况下进行failover操作
5.如果你的备库是在maximum protection mode or maximum availability mode并且使用LGWR方式传送日志,那么归档日志号是不会有缺口的必须是连续的,
这时可以直接停止接收日志,马上进行failover切换
6.在进行切换之前检查归档日志号不能有缺口gap

操作步骤:

1.如果备库是maximum protection 必须先修改成maximum performance之后才能切换
修改语句:Alter database set standby database to maximize performance;
注:切换之后你可以在改回maximum protection mode

2.如果主库与备库之间有日志传输的话,如上语句修改备库从maximum protection->maximum performance不会成功的。因为failover操作会删除原主库的DG配置,这也是为了保护主库操作。

3.检查备库归档日志号是否都是连续的,不能有缺口,否则需要补救,可以检查VKaTeX parse error: Expected 'EOF', got '#' at position 38: …口 SELECT THREAD#̲, LOW_SEQUENCE#…ARCHIVE_GAP;
如果备库归档日志号是连续的,就不用在拷贝归档日志了

如下面的:
SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
THREAD#LOW_SEQUENCE# HIGH_SEQUENCE#


1 90 92

说明缺少90、91、92号归档日志,可以从主库->copy->备库,必须保证归档日志齐全,否则会在failover时导致数据丢失

加载copy归档日志信息至控制文件
ALTER DATABASE REGISTER PHYSICAL LOGFILE ‘filespec1’;

对比主备库归档日志列表的完整性
select sequence#,ARCHIVED,APPLIED from v$archived_log;主库归档日志列表

–停止备库日志应用
alter database recover managed standby database cancel;

–关闭备库的日志传输,备库会置于mount状态。
alter database recover managed standby database finish force;

force关键字:终止了RFS进程,以便停止接收日志
finish关键字:后面还可以跟随FORCE WAIT NOWAIT

–若主备之间有gap的情况下,使用上一条语句可能会不成功,则需要执行这条语句
alter database active physical standby database;

–切换到primary
alter database commit to switchover to primary with session shutdown;

–重启数据库
shutdown immediate;
startup;

–查询数据库状态
select open_mode,database_role from v$database;
OPEN_MODE DATABASE_ROLE


READ WRITE PRIMARY

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/35768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot整合拦截器和日期转换器

一、SpringBoot整合拦截器 1.添加拦截器 package com.by.interceptor;import com.by.pojo.User; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import java…

【ARM】内存属性Memory Attributes (MemAttr)

目录 1. EWA 2. Device 3. Cacheable 4. Allocate 5. 内存属性的传播 6. 事务属性组合 7. Memory Type 内存属性Memory Attributes (MemAttr) 包含Early Write Acknowledgment (EWA), Device, Cacheable, 以及Allocate。 1. EWA EWA,Early Write Acknowledg…

AI自动生成角色和情节连续的漫画,中山大学联想提出AutoStudio,可以多轮交互式连续生成并保持主题一致性。

中山大学和联想研究院提出AutoStudio: 是一种无需训练的多代理框架,用于多轮交互式图像生成,能够在生成多样化图像的同时保持主体一致性。 AutoStudio 采用三个基于 LLM 的智能体来解释人类意图并为 SD 模型生成适当的布局指导。此外,还引入…

让AI保持怪异

让AI保持怪异 Anthropic的创意技术专家和员工设计师凯尔图尔曼(Kyle Turman)分享了一种深深引起共鸣的观点。他说(转述原话):“人工智能实际上真的很奇怪,我认为人们对这一点的认识还不够。”这引发了我向小组提出的问题:我们是否有消毒人工智能固有的陌生感的风险?…

python-序列相关

序列(squence)是一组按顺序、紧密排列在一起的数据集。序列的作用是便于管理、方便数据操作更重要的是序列支持切片操作。 序列主要包括:列表、元组、字符串和字节串 内置数据结构: 容器:列表、元组、字典、集合 结构…

Chromium 调试指南2024 Mac篇 - 准备工作 (一)

1.引言 Chromium是一个由Google主导开发的开源浏览器项目,它为Google Chrome浏览器提供了基础框架。Chromium不仅是研究和开发现代浏览器技术的重要平台,还为众多其他基于Chromium的浏览器(如Microsoft Edge、Brave等)提供了基础…

atcoder abc 359

A count takahashi 问题: 思路&#xff1a;字符串比较 代码&#xff1a; #include <bits/stdc.h>using namespace std;int main() {int n;cin >> n;int ans 0;for(int i 1; i < n; i ) {string s;cin >> s;if(s[0] T) ans ;}cout << ans;re…

Android 多媒体开发——Media3与MediaSession最全使用指南

一、Media3库简介 1.1 Media3是什么&#xff1f; 官方释义&#xff1a; Jetpack Media3 is the new home for media libraries that enables Android apps to display rich audio and visual experiences. Media3 offers a simple architecture with powerful customization,…

软考出成绩了,速查,查分方式看这里

各位考生&#xff0c;软考出成绩啦&#xff01;大家赶紧查一下&#xff0c;各科都45分就是通过&#xff01; 软考成绩查询入口已开通&#xff0c;此刻你是不是既激动又忐忑&#xff1f;速查&#xff01; ★ 查询网站 中国计算机技术职业资格网https://bm.ruankao.org.cn/sign/…

如何轻松获取 GitLab 指定分支特定路径下的文件夹内容

第一步&#xff1a; 获取 accessToken 及你的 项目 id &#xff1a; 获取 accessToken ,点击用户头像进入setting 按图示操作&#xff0c;第 3 步 填写你发起请求的域名。 获取项目 id , 简单粗暴方案 进入 你项目仓库页面后 直接 源码搜索 project_id&#xff0c; value 就…

记录Gstreamer的uridecodebin可以自动选择硬解码器

记录&#xff1a; uridecodebin3 和uridecodebin优先硬解码 这两个插件&#xff0c;本来是负责动态选择合适的解码器来处理特定的媒体流&#xff0c;使用案例&#xff1a; gst-launch-1.0 uridecodebin urirtsp://192.168.1.120:8554/test ! glimagesink -v gst-launch-1.0 …

Linux通用LInux高危漏洞(CVE-2024-1086)修复案例

一、漏洞描述 2024年3月28日&#xff0c;监 Linux kernel权限提升漏洞&#xff08;CVE-2024-1086&#xff09;的PoC/EXP在互联网上公开&#xff0c;该漏洞的CVSS评分为7.8&#xff0c;目前漏洞细节已经公开披露&#xff0c;美国网络安全与基础设施安全局&#xff08;CISA&…

【UE5.3】笔记4-自定义材质蓝图

正常来说&#xff0c;我们都是拿到什么材质用什么材质&#xff0c;那么我们如何去创建自定义的材质呢&#xff1f; 首先&#xff0c;创建MyMaterials文件夹用来存放我们自制的材质&#xff1b; 然后&#xff0c;右键创建一个材质&#xff0c;起个名字&#xff0c;双击打开&am…

Linux-笔记 全志平台休眠功能初探

前言 全志平台支持的休眠功能主要包括两种模式&#xff1a;休眠模式和待机模式。这两种模式用于降低设备的功耗&#xff0c;并在需要时快速恢复工作状态。由于平台为T113&#xff0c;所以可以很方便的使用RTC来做唤醒源。唤醒源指的是能够让系统从休眠状态恢复到工作状态的信号…

【Linux】Linux基础开发工具(yum)

Linux 软件包管理器 yum 什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安 装程序)放在一个服务器上, 通过包管理器可以很方便…

不同材质的不锈钢氮气柜优缺点和使用场景分析

不锈钢氮气柜是一种用于存储对湿度敏感的物品的专用储藏设备&#xff0c;通过充入干燥的氮气来降低柜内湿度&#xff0c;保护存储物免受氧化或腐蚀。 根据不同的材质&#xff0c;不锈钢氮气柜可分为&#xff1a; 一、201不锈钢氮气柜&#xff1a; 201不锈钢因其较低的镍含量而成…

【第14章】探索新技术:如何自学SD3模型(找官方资料/精读/下载/安装/3款工作流/效果测试)ComfyUI基础入门教程

近期,也就是2024年6月12日,StabilityAI开源了最新的SD3模型的2B版本,而神奇的是,ComfyUI早在6月11号就已经适配了SD3!相比之下,SD WebUI 的更新速度却远远落后... 所以,如果想要尝试一些AI绘画领域的新技术,ComfyUI是一个非常值得投入时间学习的工具。 这节课,我们就…

防火墙虚拟系统

防火墙虚拟系统 防火墙虚拟系统的应用场景 大中型企业的网络隔离 通过防火墙的虚拟系统将网络隔离为研发部门、财经部门和行政部门。各部门之间可以根据权限互相访问&#xff0c;不同部门的管理员权限区分明确。 云计算中心的安全网关 通过配置虚拟系统&#xff0c;可让部署…

[XYCTF新生赛2024]-PWN:ptmalloc2 it‘s myheap plus解析(glibc2.35,堆中的栈迁移,orw)

查看保护 查看ida 思路&#xff1a; 泄露libc和堆地址就不多说了&#xff0c;fastbin duf也不解释了。这里主要是利用fastbin duf在environ附近创建堆块&#xff0c;泄露environ中的栈地址&#xff0c;然后就利用fastbin duf修改rbp和返回地址进行栈迁移了&#xff0c;迁移目标…

Xcode安装Simulator失败问题解决方法

Xcode安装Simulator_Runtime失败&#xff0c;安装包离线安装保姆级教程 Xcode更新之后有时候会提示要安装模拟器运行时环境&#xff0c;但是用Xcode更新会因为网络原因&#xff0c;我觉得基本上就是因为苹果服务器的连接不稳定导致的&#xff0c;更可气的是不支持断点续…