oracle仲裁磁盘是一块磁盘吗,一种双活系统共享仲裁盘的方法与流程

本发明涉及数据库领域,尤其涉及了一种双活系统共享仲裁盘的方法。

背景技术:

出于灾备目的,一般都会建设至少两个数据中心,一个数据中心承担用户的业务,另一个数据中心备份数据、配置、业务等。双活数据中心是指两个数据中心同时承担业务且相互备份,以提高两个数据中心的整体服务能力和系统资源利用率。

双活数据中心中的两个数据中心之间每隔设定时间会向对方发送一个心跳包,若在设定时间内未接收到对方的心跳包,则备份中断。此时如果两个数据中心都继续承担业务,就会出现数据不一致的问题。仲裁机制是当前避免出现数据不一致问题的手段之一,其实现方式为:两个数据中心分别向独立于两个数据中心设置的仲裁设备发送仲裁请求,仲裁设备根据仲裁请求确定获胜的数据中心,获胜的数据中心继续提供服务(即承担业务),没有获胜的数据中心停止提供服务。

在基于Oracle RAC数据库的双活集群环境下,Oracle数据库集群的仲裁,基于仲裁磁盘完成,在标准情况下,需要三个仲裁磁盘,Oracle数据库集群需要奇数个仲裁磁盘来防止出现集群脑裂的情况,并且Oracle数据库集群的策略是当可用磁盘少于仲裁磁盘的一半,整个集群就会关闭。

当基于Oracle RAC提供数据中心中的数据库双活方案时,有两种方案,而两种方案都有缺陷:

1、由于仲裁盘为奇数个,可以在两边数据中心一边部署两个仲裁盘,另一边部署一个仲裁盘,但是这样会造成两边数据库并不对等的情况。当数据中心出现故障时仲裁盘多的那边始终会存活,然而当仲裁盘多的数据中心出现故障时,仲裁盘少的那边由于没有获取到大多数仲裁盘也无法存活。

2、另一种方案是基于第三方仲裁盘,这种方案由于仲裁盘在第三方机房,由于需要建立第三方机房提供仲裁,会导致双活系统的建设成本大大增加的问题。

技术实现要素:

本发明针对现有技术中IO性提升困难、成本较高的缺点,提供了一种双活系统共享仲裁盘的方法。

为了解决上述技术问题,本发明通过下述技术方案得以解决。

一种双活系统共享仲裁盘的方法,包括如下步骤:

(1)配置机房结构:在第一机房内配置第一节点、第一内存磁盘和第二内存磁盘,第二机房内配置第二节点、第三内存磁盘和第四内存磁盘;在第一内存磁盘、第二内存磁盘、第三内存磁盘和第四内存磁盘均划分出相同的空间,对应生成第一仲裁盘、第二仲裁盘、第三仲裁盘和第四仲裁盘;

(2)布置分布式锁:在第三机房布置分布式锁,在分布式锁设置集群,集群中设置三个节点,三个节点互为备份并提供锁服务,第二仲裁盘和第三仲裁盘配置分布式锁信息;

(3)连接生成架构:第一仲裁盘分别连接第一节点和第二节点,第四仲裁盘分别连接第一节点和第二节点;第二仲裁盘和第三仲裁盘连接仲裁逻辑盘,仲裁逻辑盘分别连接第第一节点和第二节点;

(4)故障处理:当第一机房或第二机房出现故障时,触发仲裁逻辑盘的仲裁程序,仲裁程序用于尝试获取分布式锁,若获取到锁的第一机房或第二机房判定为存活;若获取不到锁的第一机房或第二机房判定为死亡;

(5)恢复数据:故障恢复时,将存活的机房中的仲裁磁盘数据覆盖掉死亡机房的仲裁磁盘数据,覆盖完成后,数据库根据存活机房中仲裁磁盘的数据恢复整个集群数据。

本发明由于采用了以上技术方案,具有显著的技术效果:

本发明基于共享仲裁盘及分布式锁技术,在双数据中心场景下,保证每个数据中心的数据库节点可以正常提供服务,并在链路出现故障时,通过分布式锁和仲裁抢锁机制保证只有一个数据中心中的数据库可以正常服务,不会造成脑裂,保证了数据中心的数据一致性,使双活数据数据中心成为可能。当某一仲裁磁盘出现故障时,由于有仲裁盘投票选举机制,保证了单个仲裁磁盘出现故障不影响整体集群的使用。当某一节点出现故障时,由于有多节点继续提供服务,不会影响整体集群使用。

附图说明

图1是本发明一种双活系统共享仲裁盘的方法的结构连接示意图。

具体实施方式

下面结合附图与实施例对本发明作进一步详细描述。

如图1所示,一种双活系统共享仲裁盘的方法,包括如下步骤:

(1)配置机房结构:在第一机房内配置第一节点、第一内存磁盘和第二内存磁盘,第二机房内配置第二节点、第三内存磁盘和第四内存磁盘;在第一内存磁盘、第二内存磁盘、第三内存磁盘和第四内存磁盘均划分出相同的空间,对应生成第一仲裁盘、第二仲裁盘、第三仲裁盘和第四仲裁盘;

(2)布置分布式锁:在第三机房布置分布式锁,在分布式锁设置集群,集群中设置三个节点,三个节点互为备份并提供锁服务,第二仲裁盘和第三仲裁盘配置分布式锁信息;

(3)连接生成架构:第一仲裁盘分别连接第一节点和第二节点,第四仲裁盘分别连接第一节点和第二节点;第二仲裁盘和第三仲裁盘连接仲裁逻辑盘,仲裁逻辑盘分别连接第第一节点和第二节点;

(4)故障处理:当第一机房或第二机房出现故障时,触发仲裁逻辑盘的仲裁程序,仲裁程序用于尝试获取分布式锁,若获取到锁的第一机房或第二机房判定为存活;若获取不到锁的第一机房或第二机房判定为死亡;

(5)恢复数据:故障恢复时,将存活的机房中的仲裁磁盘数据覆盖掉死亡机房的仲裁磁盘数据,覆盖完成后,数据库根据存活机房中仲裁磁盘的数据恢复整个集群数据。

本发明基于共享仲裁盘及分布式锁技术,在双数据中心场景下,保证每个数据中心的数据库节点可以正常提供服务,并在链路出现故障时,通过分布式锁和仲裁抢锁机制保证只有一个数据中心中的数据库可以正常服务,不会造成脑裂,保证了数据中心的数据一致性,使双活数据数据中心成为可能。当某一仲裁磁盘出现故障时,由于有仲裁盘投票选举机制,保证了单个仲裁磁盘出现故障不影响整体集群的使用。当某一节点出现故障时,由于有多节点继续提供服务,不会影响整体集群使用。

实施例1

本实施例中,双活系统共享仲裁盘组建具体步骤如下:

在A/B两个机房,分别由两台存储节点和两台计算节点,操作系统为Redhat6.6以上,CPU选择2颗,32核,内存选择64G,存储空间选择320G。

A/B两个机房各自选择一个存储节点AS1,BS1,并划分仲裁镜像盘作为后续逻辑仲裁盘使用。

A/B两个机房确定可以通信,并且计算节点和存储节点都能互相通信;

分别将存储节点AS1和存储节点BS1的镜像盘初始化,并将存储节点AS1和存储节点BS1的镜像盘连接并组成逻辑仲裁盘。

将本机房的逻辑仲裁盘和两个存储节点的物理仲裁盘都输出给计算节点。

计算节点创建数据库,并使用仲裁盘作为仲裁服务。

操作步骤如下:

1、在同城异地的两个数据中心通过交换机和光纤线缆建立网络通信,两个数据中心分别有若干计算节点(一般为两个)和偶数个存储节点(一般为两个);

2、两个数据中心各挑选一个存储节点提供一块盘作为镜像盘,将镜像盘初始化以便于构建最终的逻辑盘,当两个数据中心建立通信之后,两个数据中心的存储节点分别执行镜像盘连接操作,此时逻辑盘管理程序会执行连接操两块镜像盘连接并生成逻辑盘,逻辑盘会分别存在于两个数据中心的两个存储节点,并且在对逻辑盘执行IO操作的时候,会将数据同步的写入到两个数据中心中的镜像盘中;

3、此时,将两个数据中心中的逻辑盘分别输出给各自数据中心中的计算节点,另外再将物理仲裁盘输出给数据中心的所有节点,这样每个数据中心的计算节点都会拥有奇数个仲裁盘(偶数个物理仲裁盘加上一个逻辑仲裁盘)。

4、创建数据库时将所有仲裁盘都导入并建库,此时数据库基于仲裁盘提供仲裁服务。

实施例2

实施例2与实施例1条件基本相同,不同之处在于,实施完成并提供服务后,机房出现故障的情况。

1、机房链路发生故障,两边机房的仲裁盘监控程序先后发现链路中断,并触发链路中断处理程序。

2、链路中断处理程序执行链路中断处理流程,先将AS1和BS1的逻辑仲裁盘锁住,通过仲裁链路执行抢锁,锁被AS1抢到,AS1释放逻辑仲裁盘的锁并继续提供服务,并将自身标记为存活,AS2由于没有抢到锁将自身标记为死亡。

实施例3

实施例3与实施例1条件基本相同,不同之处在于,实施完成并已经出现仲裁判断后的恢复情况。

1、链路故障恢复,仲裁程序执行上线操作,仲裁盘监控程序执行恢复流程;

2、AS1仲裁盘监控程序检测A/B机房中哪个节点为存活节点,检查发现AS1节点已经标记为存活,会将AS1镜像盘数据覆盖到AS2,并重新将连接。

到死亡节点的仲裁盘,并将镜像卷拉起。

链路恢复双方节点同时提供服务。

总之,以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所作的均等变化与修饰,皆应属本发明专利的涵盖范围。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值