导读:本期聚焦于杨子江创作的《Oracle RAC Voting Disk如何备份与恢复?详细操作步骤解析》,敬请观看详情。Voting Disk是Oracle RAC集群的仲裁盘,一旦损坏整个集群可能无法正常启动,掌握它的备份与恢复方法对DBA来说至关重要。本文围绕Voting Disk的核心作用展开,先解释它在集群仲裁机制中的工作原理,再分别介绍使用crsctl backup votingdisk命令手动备份、使用dd命令镜像备份以及Oracle Grid Infrastructure 11g R2之后的自动备份机制。恢复部分详细讲解restore votingdisk命令的操作步骤、不同冗余模式下的恢复差异,以及votedisk迁移、OCR与Voting Disk联合备份等实战技巧,最后总结日常运维中的注意事项,帮助读者建立完整的集群件保护方案。

Voting Disk(表决磁盘)是Oracle RAC集群架构中最关键的组件之一,它负责在集群节点之间出现通信故障时,裁定哪些节点可以继续存活、哪些节点必须被驱逐。一旦Voting Disk丢失或损坏,整个集群将无法正常启动,严重时甚至需要重新配置集群件。因此,对Voting Disk进行定期备份,并熟练掌握其恢复流程,是每一位Oracle DBA的必修课。

Oracle RAC Voting Disk如何备份与恢复?详细操作步骤解析

一、Voting Disk的工作原理与备份的必要性

在一个Oracle RAC集群中,多个节点通过内部私有网络进行心跳通信。当节点之间的网络出现异常,或者某个节点发生故障时,集群必须做出决策:哪些节点继续提供服务,哪些节点被强制下线。这个决策过程就依赖Voting Disk来完成。

Voting Disk的核心规则是"多数表决"机制。每个节点在访问Voting Disk时会持续写入心跳信息,当集群发生脑裂(Split Brain)时,能够访问到超过半数Voting Disk副本的节点组将被保留,无法获得多数票的节点组会被驱逐。举例来说,如果集群配置了3个Voting Disk,某节点只能访问其中1个,那么该节点将失去仲裁资格而被重启。

正是由于Voting Disk承载了如此关键的仲裁职能,Oracle官方强烈建议在生产环境中对其进行备份。尤其是在Oracle 11g R2之前的版本中,Voting Disk的损坏往往意味着集群的完全瘫痪。从11g R2开始,如果Voting Disk存放在ASM磁盘组中,Oracle会自动进行备份,但DBA仍然需要了解手动备份与恢复的方法,以应对各种异常场景。

二、Voting Disk的多种备份方式

1. 使用crsctl命令手动备份

Oracle 10g和11g R1版本中,备份Voting Disk最标准的方式是使用crsctl命令。该命令会将Voting Disk的内容导出为一个文件,存放在指定路径下。具体命令如下:

# 以root用户执行备份操作
# 将Voting Disk备份到指定文件
crsctl backup votedisk /backup/voting_disk_bak_20240101.dmp

# 备份完成后验证备份文件
ls -l /backup/voting_disk_bak_20240101.dmp

备份文件生成后,建议将其拷贝到集群之外的安全存储上,例如NFS共享目录或磁带库。需要注意的是,执行该命令必须使用root用户,并且一次只能备份一个Voting Disk,如果有多个副本需要分别执行。

2. 使用dd命令进行物理镜像备份

除了官方命令,也可以使用操作系统层面的dd命令对Voting Disk所在的裸设备或块设备做镜像备份。这种方式在紧急恢复时非常有效:

# 使用dd备份Voting Disk裸设备
dd if=/dev/raw/raw1 of=/backup/voting_dd_bak.img bs=4k

# 恢复时使用反向操作
dd if=/backup/voting_dd_bak.img of=/dev/raw/raw1 bs=4k

使用dd备份时要特别注意if和of参数不能写反,一旦写反会把备份文件清空。同时要记录好每个Voting Disk副本与备份文件的对应关系,避免恢复时弄混顺序。在11g R2之前,使用dd之前建议先执行crsctl stop crs关闭集群,保证数据一致性。

3. 11g R2以后的自动备份机制

从Oracle 11g R2开始,Grid Infrastructure引入了新的架构。如果Voting Disk存放在ASM磁盘组中(这也是当前的推荐做法),Oracle会将其元数据自动备份到ASM磁盘组中,DBA无需手动干预。可以通过以下命令查看当前Voting Disk的位置和状态:

# 查看Voting Disk的存放位置
crsctl query css votedisk

# 输出示例
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   7a5bc85c8f4f4fbbfba5e3a2b1c8d9e (/dev/asm-disk1) [OCRVD]
Located 3 voting disk(s).

在自动备份机制下,即使某个磁盘损坏,只要ASM磁盘组的冗余级别满足要求(Normal冗余至少3块盘,High冗余至少5块盘),集群就可以自动在存活的磁盘上重建Voting Disk,无需人工恢复。

三、Voting Disk的恢复操作详解

1. 使用备份文件恢复

当Voting Disk损坏且无法自动修复时,可以使用之前备份的文件进行恢复。恢复操作必须在root用户下执行,且需要在所有节点上关闭Oracle Clusterware之后进行:

# 1. 在所有节点关闭集群件
crsctl stop crs

# 2. 使用备份文件恢复Voting Disk
crsctl restore votingdisk /backup/voting_disk_bak_20240101.dmp

# 3. 恢复完成后重新启动集群
crsctl start crs

恢复完成后,建议使用crsctl check crs命令在所有节点验证集群状态,并通过ocrcheck和crsctl query css votedisk确认相关组件均已恢复正常。

2. 重建与迁移Voting Disk

在某些场景下,例如存储迁移或磁盘规划调整,需要将Voting Disk迁移到新的位置。在11g R2之前,需要先用delete选项移除旧的,再用add选项添加新的:

# 向集群添加新的Voting Disk
crsctl add votedisk /dev/raw/raw3

# 移除旧的Voting Disk
crsctl delete votedisk /dev/raw/raw2

# 强制模式(集群关闭状态下添加)
crsctl add votedisk /dev/raw/raw3 -force

在11g R2及以后的版本中,操作被大幅简化,直接指定目标ASM磁盘组即可完成迁移:

# 将Voting Disk迁移到新的ASM磁盘组
crsctl replace votedisk +NEW_DG

replace命令会自动完成旧副本的删除和新副本的创建,整个过程对集群运行影响很小。迁移完成后务必使用crsctl query css votedisk确认新的位置已经生效,并且所有副本状态均为ONLINE。

四、日常运维中的注意事项

首先,Voting Disk的备份策略应该与OCR的备份策略统一规划。OCR记录了集群的所有配置信息,Voting Disk负责仲裁,两者共同构成集群件的基石。建议将两者的备份文件存放在集群外部的存储介质上,并定期演练恢复流程,确保备份真实可用。

其次,Voting Disk的副本数量必须保持奇数。这是因为多数表决机制依赖于奇数个副本,如果配置为偶数,一旦发生脑裂可能出现两组节点各获得一半票数的僵局。Oracle允许的最小配置是1个副本(外部冗余),但生产环境强烈建议至少3个副本,分布在不同的故障组甚至不同的存储设备上。

最后,要建立日常巡检机制。定期执行crsctl query css votedisk检查副本状态,一旦发现某个副本状态异常,应及时排查底层存储问题。对于运行在ASM上的集群,还要关注ASM磁盘组的容量和冗余状态,避免因磁盘组故障导致Voting Disk全部丢失。只有将备份、监控、演练三者结合,才能真正做到对集群件的全方面保护。

Oracle RACVoting Disk集群仲裁盘修改时间:2026-09-02 11:42:48

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编写,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260902/48906.html,基于非商业使用的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。