oracle RAC 之表决磁盘(votedisk)
今天是2014-03-25,因分析deadlock耽误了写RAC的东西,今天再来写篇RAC中表决磁盘的管理日志。特此记录一下。
表决磁盘(votedisk)是为因网络导致脑裂的情况而创建的。表决磁盘在11G存储在ASM中,且如果放入ASM将有几点要求。
第一:表决磁盘文件必须全部放入ASM中;
第二:表决磁盘存在asm中的个数不能删除和添加,而是通过asm的normal,high、external冗余级别决定的。
如:在normal中必须有3个故障组存在3个votedisk,在high中必须要有5个故障组存在5个votedisk,那么在external只有1个votedisk
第三:表决磁盘文件在11G不在支持dd命令对其的备份和还原,而是支持crsctl相关命令
第四:表决磁盘文件的个数要是奇数,便于投票选举,且表决磁盘文件的个数最多为15个,但一般没必要超过5个。
介绍一下对于网络导致脑裂中表决磁盘的选举过程。
假如我有三个RAC实例节点分别是A,B,C那么当A节点宕机了,那么在11G中通过先尝试停止响应的资源,进而剔除该节点,那么为什么会剔除该节点呢?那是因为当发生脑裂的时候
当发生脑裂的时候被分割成两部分,A 为一部分投票为1,BC为一部分投票为2,那么更具选举会选择票数多的那方,从而剔除A;刚刚这是三个节点的例子
那么对于两个实例组成的RAC怎么处理呢?那么这个时候表决磁盘就起到一定的作用了,当脑裂发生了,那么每一方都持一票,谁也不能剔除谁?这可怎么办呢?那么oracle会选择
存留首先获得表决磁盘文件多的那方,将组成一个集群从而剔除另一方。通常我们所说的磁盘心跳就是通过共享磁盘中的表决磁盘来检测的。
eg:
[grid@rac-one peer]$ crsctl get css disktimeout
CRS-4678: Successful get disktimeout 200 for Cluster Synchronization Services.
[grid@rac-one peer]$
通过ocssd进程来管理
如何移动表决磁盘文件到另一asm磁盘组呢?
eg:
[grid@rac-two ~]$ sqlplus / as sysasm
SQL*Plus: Release 11.2.0.4.0 Production on Tue Mar 25 23:31:24 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
SQL> col name for a20
SQL> col path for a40
SQL> set linesize 200
SQL> select a.name,b.name,b.path,b.voting_file from v$asm_disk b,v$asm_diskgroup a where a.group_number=b.group_number;
NAME NAME PATH V
-------------------- -------------------- ---------------------------------------- -
DATADG DATADG_0000 /dev/asm-diskg N
TESTDG TESTDG_0004 /dev/asm-diskh N
TESTDG TESTDG_0000 /dev/asm-diski N
TESTDG TESTDG_0001 /dev/asm-diskj N
TESTDG TESTDG_0003 /dev/asm-diskf N
GIDG GIDG_0001 /dev/asm-diskc Y
TESTDG TESTDG_0002 /dev/asm-diskk N
GIDG GIDG_0000 /dev/asm-diskd Y
GIDG GIDG_0002 /dev/asm-diske Y
DATADG DATADG_0001 /dev/asm-diskb N
10 rows selected.
SQL> exit
另外还可以使用crsctl query css votedisk 获得信息
[grid@rac-two ~]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 3da4160ba0334f66bf4b2e6e9b38cceb (/dev/asm-diskd) [GIDG]
2. ONLINE 2797b9ed25e84f34bf8fa5948c8fedb6 (/dev/asm-diske) [GIDG]
3. ONLINE 69ade332aa214f3abfd8b77a410019b0 (/dev/asm-diskc) [GIDG]
Located 3 voting disk(s).
当votedisk属于asm组从而移动votedisk的时候将不能使用crsctl add css votedisk命令,否则会报错。但是如果原先votedisk属于集群文件系统文件,那么可以使用该命令进而replace
完成操作。
[grid@rac-two ~]$ crsctl add css votedisk +testdg
CRS-4671: This command is not supported for ASM diskgroups.
CRS-4000: Command Add failed, or completed with errors.
将votedisk从磁盘组GIDG 移动到TESTDG
[grid@rac-two ~]$ crsctl replace votedisk +TESTDG
Successful addition of voting disk 98f8244772c74fc0bf8c5ddc699775f1.
Successful addition of voting disk aa123f79eef94f9ebf12ed0953a3caa6.
Successful addition of voting disk 42e16333baa44f78bf00840265bff13d.
Successful deletion of voting disk 3da4160ba0334f66bf4b2e6e9b38cceb.
Successful deletion of voting disk 2797b9ed25e84f34bf8fa5948c8fedb6.
Successful deletion of voting disk 69ade332aa214f3abfd8b77a410019b0.
Successfully replaced voting disk group with +TESTDG.
CRS-4266: Voting file(s) successfully replaced
[grid@rac-two ~]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 98f8244772c74fc0bf8c5ddc699775f1 (/dev/asm-diski) [TESTDG]
2. ONLINE aa123f79eef94f9ebf12ed0953a3caa6 (/dev/asm-diskk) [TESTDG]
3. ONLINE 42e16333baa44f78bf00840265bff13d (/dev/asm-diskf) [TESTDG]
Located 3 voting disk(s).
[grid@rac-two ~]$
备份表决磁盘文件。
刚刚介绍了无需备份
如果磁盘文件损坏了那么如何修复呢?
首先要独占模式启动crs资源
crsctl start crs -excl
如果是存在asm中,使用crsctl replace votedisk +diskgroup
完成修复
如果是存在集群文件系统,那么需要查看votedisk信息,crsctl query css votedisk然后删除原先的失效的votedisk,进而在添加votedisk
命令为:crsctl add css votedisk ‘path‘,
然后再使用root停止crs,crsctl stop crs
然后再使用root启动crs ,crsctl start crs
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。