前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle11g RAC双NFS仲裁容错方案

Oracle11g RAC双NFS仲裁容错方案

作者头像
魏新宇
发布2018-03-22 12:19:12
1.3K0
发布2018-03-22 12:19:12
举报

说明:

整理文档时发现自己在2010年写的一个RAC容灾方案,觉得有一些用,分享出来。当时为了验证此方案,做了很多PoC。方案相对比较复杂,但是也提供了一种思路,读者需要对RAC的架构有一定了解。本方案为当年个人测试验证,不代表任何官方观点。方案环境为:Oracle 11.2.3+AIX 6.1.7。存储使用IBM DS8800,启用同步复制MetroMirror。本方案的核心点是如何保证在出现站点故障时,RAC voting device票数大于半数,以便恢复CRS。

1.方案介绍

生产环境有两个站点,主站点和备站点,主站点有节点Node1, 备站点有Node2、Node3。三个节点配置Oracle RAC。主站点和备站点各有一个NFS服务器,提供voting device的NFS Quorum。主站点存储和备站点存储分别配置一个LUN,映射给本站点的NFS服务器。两个LUN配置MetroMirror关系。主NFS将识别的LUN创建vg(vgnfs)和文件系统(/vote1),将此文件系统作为NFS文件系统,而RAC节点的voting device的NFS Quorum文件位于此NFS文件系统上。

当主站点故障后,Node1,NFS服务器分区及主站点的存储均出现故障,备站点Node2,Node3因为只能访问本地一个voting disk,因此Oracle CRS也会异常终止。

此时,在备NFS服务器上将vgnfs导入并挂在/vote1文件系统。然后在node2和node3上mount备NFS服务器上的/vote1文件系统后,重新启动两个节点的CRS服务。此时由于node2和node3可以识别到两个vote设备,因此可以启动成功。

2 配置步骤

2.1环境介绍

主站点的RAC节点为:

node1:172.16.69.225

主站点NFS服务器:

node1:172.16.58.157

备站点的RAC节点为:

node2:172.16.69.226

node3:172.16.69.227

备站点的nfs服务器

node2:172.16.58.158

2.2配置NFS

2.2.1 配置NFS服务器

在两个NFS服务器上,首先创建grid用户和oinstall组,用户和组的ID号需要与三个RAC节点相同。将grid归属到oinstall组里。

#mkgroup id='1000' adms='root'oinstall

#mkuser id='1100' pgrp='oinstall'groups='asmadmin,asmdba,asmoper,dba' home='/home/grid' grid

在主备站点的两个DS8K上分别配置两个LUN,分别映射给主NFS server和备NFS server。在两个DS8K上,LUN ID分别为0400和1400。两个LUN之间配置Metro Mirror的PPRC关系:

dscli> lspprc 0400

ID State Reason Type SourceLSS Timeout (secs) Critical ModeFirst Pass Status

=============================================================================== 0400:1400 Full Duplex - Metro Mirror 04 60 Disabled Invalid

主NFS服务器识别0400的盘符为hdisk12,备NFS服务器识别的1400的盘符为hdisk38。PPRC的关系为0400->1400的MetroMirror关系。

在主NFS上用hdisk12创建vg—vgnfs,并创建文件系统/vote1

smit mkvg->Add an Original Volume Group

vg创建成功以后,创建文件系统/vote1 root@node1[/]#smit jfs2à Add an Enhanced JournaledFile System-> vgnfs

文件系统创建成功以后,在主NFS上mount该文件系统:

#mount /vote1

将RAC三个节点的IP地址和主机名加入到两个NFS服务器的/etc/hosts文件中:

172.16.69.225 node1

172.16.69.226 node2

172.16.69.227 node3

然后,分别在主备NFS上启动NFS服务(备NFS服务器上需要先执行#mkdir /vote1),设置/vote1为NFS文件:

root@node1[/]#smit mknfs

root@node1[/]#smit nfs-> Network FileSystem (NFS) -> Add a Directory to Exports List

在两个NFS服务器上查看:

root@node2[/]#exportfs

/vote1-public,sec=sys:krb5p:krb5i:krb5:dh,rw

root@node1[/]#exportfs

/vote1-public,sec=sys:krb5p:krb5i:krb5:dh,rw

2.2.2 配置NFS客户端(NFS客户端不能使用普通方式mount,需要先修改/etc/filesystems文件)

修改三个RAC节点的/etc/filesystems文件,增加mount选项:

/vote:

dev= "/vote"

vfs= nfs

nodename=172.16.58.157

mount= true

options=rw,bg,hard,intr,rsize=32768,wsize=32768,timeo=600,vers=3,proto=tcp,noac,sec=sys

account= false

然后在三个RAC节点上mount /vote1文件系统

# mount /vote1

# df -g

Filesystem GB blocks Free %Used Iused %Iused Mounted on

172.16.58.157:/vote1 10.00 9.51 5% 8 1% /vote1

2.3配置voting device

在初始情况下,RAC的voting device位于一块普通的磁盘上,只有一份:

$ crsctl query css votedisk

## STATE File Universal Id File Name Disk group

-- ----- ----------------- --------- ---------

1. ONLINE 5e27688ef35c4fc8bfb6d0e095faab57 (/dev/rhdisk2) [DATA1DG]

Located 1 voting disk(s).

需要将其替换到有包含两个磁盘,并且包含一个NFS Quorum设备、冗余属性为Normal的DG上。

在两个站点的DS8K上分别创建一个LUN,LUN ID均为1200,不配置PPRC,映射给三个RAC节点。

2.3.1 配置DG

RAC节点识别到的盘符为hdisk7和hdisk9.

接下来,在三个节点上修改磁盘的属性

# cat /tmp/1.sh

## Change ownership to gridand oracle

for pv in `lsdev -Cc disk |grep -i mpio | awk '{print $1}'`

do

chdev -l $pv -areserve_policy=no_reserve -a algorithm=round_robin

chown grid:oinstall/dev/r$pv

chmod g+rw /dev/r$pv

done

#sh /tmp/1.sh

用hdisk7和hdisk9创建一个新的DG,DGVOTE:

#su – grid

$sqlplus / as sysasm

SQL> CREATE DISKGROUPDGVOTE NORMAL REDUNDANCY

FAILGROUP FG1 DISK'/dev/rhdisk8' SIZE 10G FAILGROUP FG2 DISK '/dev/rhdisk10' SIZE 10G;

#dd if=/dev/zero of=/vote1/qq bs=1M count=500

在NFS server上进行操作:

#chown -R grid:oinstall/vote1

#chmod -R 777 /vote1

2.3.2 DG增加NFS quorum

#su - grid

$sqlplus / as sysasm

SQL> alter system setasm_diskstring='/dev/rhdisk*', '/vote/q*';

SQL>ALTER DISKGROUPDGVOTE ADD QUORUM DISK '/vote1/qq' SIZE 500M;

2.3.3 替换voting device

# crsctl replacevotedisk +DGVOTE

替换成功以后,进行确认:

# crsctl query css votedisk

## STATE File Universal Id File Name Disk group

-- ----- ----------------- --------- ---------

1. OFFLINE 28f0d723b4df4feabf93e6ab27831841 () []

2. ONLINE 115be1be59734f6bbf6c4c9c3ecefd66 (/dev/rhdisk9) [DGVOTE]

3. ONLINE 5af523cf33f04f64bff19de4b7c73b32 (/vote1/qq) [DGVOTE]

Located 3 voting disk(s).

3 故障处理

3.1站点故障发生

当主站点(主站点的服务器,主站点的存储)和主NFS server发生故障以后,RAC的node2和node3的CRS会由于voting device数量不够而异常停止.

3.2数据库紧急恢复

首先在DS8K上对NFS文件系统所在的磁盘上进行failoverpprc的操作,以便备用NFS服务器可以导入vgnfs

dscli> failoverpprc-remotedev IBM.2107-75BGP81 -type mmir 1400:0400

CMUC00196I failoverpprc:Remote Mirror and Copy pair 1400:0400 successfully reversed.

在备用NFS服务器上importvg

在备用服务器上mount文件系统:

#mount /vote

在RAC的三个节点上,将/etc/filesystems中主用NFS服务器的IP由172.16.58.157改为备用NFS服务器的IP地址:172.16.58.158

sed"s/172.16.58.157/172.16.58.158/g" /etc/filesystems > /tmp/1;cp -Rp/tmp/1 /etc/filesystems

先重启node2和node3和NFS client服务:

#stopsrc-s rpc.mounted

#startsrc-s rpc.mounted

在RAC的node2和node3上mount文件系统:

#mount /vote1

在node2和node3上启动CRS:

#crsctl stop crs -f

#crsctl start crs

此时由于vote票数为两票,node2和node3的crs和数据库实例可以正常启动:

# crsctl query css votedisk

## STATE File Universal Id File Name Disk group

-- ----- ----------------- --------- ---------

1. OFFLINE 28f0d723b4df4feabf93e6ab27831841 () []

2. ONLINE 115be1be59734f6bbf6c4c9c3ecefd66 (/dev/rhdisk9) [DGVOTE]

3. ONLINE 5af523cf33f04f64bff19de4b7c73b32 (/vote1/qq) [DGVOTE]

3.3站点故障恢复后

在站点故障恢复以后,首先启动RAC node1的CRS服务:

#crsctl start crs

然后,恢复dg中offline的磁盘:

SQL> selectGROUP_NUMBER,NAME from v$asm_diskgroup;

GROUP_NUMBER NAME

-----------------------------------------

2 DATA2DG

4 DGVOTE

SQL> selectDISK_NUMBER,STATE,PATH,FAILGROUP from v$asm_disk where GROUP_NUMBER=4;

DISK_NUMBER STATE PATH FAILGROUP

----------- --------

1 NORMAL /dev/rhdisk9 DGVOTE_0001

3 NORMAL /vote1/qq DGVOTE_0003

0 NORMAL DGVOTE_0000

此时,需要将hdisk7的状态由offline变为online,以便voting device的数量恢复为3:

SQL> alter diskgroupDGVOTE online disk DGVOTE_0000;

Diskgroup altered.

再次查看:

SQL> selectDISK_NUMBER,STATE,PATH,FAILGROUP from v$asm_disk where GROUP_NUMBER=4;

DISK_NUMBER STATE PATH FAILGROUP

----------- --------

1 NORMAL /dev/rhdisk9 DGVOTE_0001

3 NORMAL /vote1/qq DGVOTE_0003

0 NORMAL /dev/rhdisk7 DGVOTE_0000

$ crsctl query cssvotedisk

## STATE File Universal Id File Name Disk group

-- ----- ----------------- --------- ---------

1. ONLINE 115be1be59734f6bbf6c4c9c3ecefd66 (/dev/rhdisk9) [DGVOTE]

2. ONLINE 5af523cf33f04f64bff19de4b7c73b32 (/vote1/qq) [DGVOTE]

3. ONLINE 46afbaaf3f094f56bf6dd2cdc1b73c9d (/dev/rhdisk7) [DGVOTE]

站点故障恢复以后,备用NFS服务器无需切换到主用NFS服务器,但需要需要恢复vgnfs所在磁盘的PPRC关系,即进行failback操作,以便做到数据一致:

dscli> failbackpprc-remotedev IBM.2107-75BGP81 -type mmir 1400:0400

CMUC00197I failbackpprc:Remote Mirror and Copy pair 1400:0400 successfully failed back.

dscli> lspprc 1400

ID State Reason Type SourceLSS Timeout (secs) Critical ModeFirst Pass Status

=====================================================================

1400:0400 Full Duplex - Metro Mirror 14 60 Disabled Invalid

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大魏分享 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明:
  • 1.方案介绍
  • 2 配置步骤
    • 2.1环境介绍
      • 2.2配置NFS
        • 2.2.1 配置NFS服务器
        • 2.2.2 配置NFS客户端(NFS客户端不能使用普通方式mount,需要先修改/etc/filesystems文件)
      • 2.3配置voting device
        • 2.3.1 配置DG
        • 2.3.2 为DG增加NFS quorum
        • 2.3.3 替换voting device
    • 3 故障处理
      • 3.1站点故障发生
        • 3.2数据库紧急恢复
          • 3.3站点故障恢复后
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档