朱广新,马俊磊
(1.南瑞集团有限公司,江苏 南京211000;2.南京基石数据技术有限责任公司,江苏 南京210093)
DBMS广泛应用于现代社会的方方面面,政府机构、学校、银行、房地产集团、电信企业、航空公司、电商企业等组织机构都需要使用DBMS来管理其业务数据。DBMS已经成为这些领域关键的核心信息系统之一[1]。然而随着业务数据的持续增长,特别是大数据时代背景下每天指数级增长的业务数据,DBMS不可避免地会出现各种故障及性能瓶颈,因此DBMS的高可用性能就显的尤为重要。
基于Grid Infrastructure集群的MYSQL数据库高可用方案是将MYSQL作为Grid Infrastructure集群管理的一个资源,在软件架构上实现了数据库的高可用设计。当MYSQL数据库发生故障时,该集群会自动恢复发生故障的数据库,或者将其转移到其他节点上运行,该恢复过程对于用户而言是不可知的,用户不用修改任何配置也可以持续地访问数据库,有效地实现了数据库的高可用性。
Grid Infrastructure是 ORACLE 11gR2新发布的一款集群解决方案,以下详细介绍基于该软件的高可用架构的组成与结构,以及基于架构的ORACLE RAC数据库的高可用方案。
由各节点硬盘构成的共享存储,为该架构的数据存储层,各资源的数据目录存放于共享存储中。Grid Infrastructure为该架构的核心管理中心,托管各个资源,通过集群策略配置,可以有效实现各种类型资源的高可用性。
基于Grid Infrastructure的ORACLE RAC高可用架构如图1所示。
图1 基于Grid Infrastructure的ORACLE RAC高可用架构
图1 表示了基于Grid Infrastructure的ORACLE RAC高可用架构的组成与结构,其结构分为以下几个主要部分:
(1)Grid Infrastructure层
这部分是该方案的核心管理区,在其之下还有底层的存储架构。
(2)节点层
这部分以集群各节点为主,NODE1和NODE2为两个节点,NODE1-VIP和 NODE2-VIP是分别依赖于这两个节点的虚拟IP,其完全依赖于节点的存活状态。
(3)数据库实例层
该方案的数据库层为ORACLE RAC数据库。这里以两节点为例,RAC_DB1和RAC_DB2为ORACLE RAC数据库的两个实例,当其所在的节点NODE1或NODE2宕机后,集群会自动将该节点上的数据库实例转移到其余存活的节点运行,有效地保障了数据库的高可用性。
(4)网络层
网络层主要以 SCAN-IP为主,客户端的tnsnames配置文件中,只需要 SCAN-IP信息。SCAN-IP类似服务端对外提供服务的虚拟主机,客户端只需要连接到该主机就可以实现对服务端的访问,只不过访问的服务端的具体节点是随机的。
MYSQL数据库高可用方案是将MYSQL数据库配置成 Grid Infrastructure管理的一种generic_application类型资源,该资源可以和其对应的VIP产生依赖关系,在该方案中,数据库是一种通用应用程序资源,Grid Infrastructure并不认为 MYSQL是一种数据库资源,也就是说Grid Infrastructure根本没有意识到MYSQL是一种数据库!通过配置依赖于该数据库的VIP信息,可以有效实现该数据库的高可用性。
如图2所示,其中MYSQL1为运行于NODE1和NODE2节点上的MYSQL数据库实例,MYSQL-VIP为依赖于该数据库实例的VIP。当其依赖的数据库实例宕机或者发生故障时,Grid Infrastructure首先会将数据库在其发生故障的节点重启,如果超过一定次数,就将其对应VIP漂移到任意存活的节点上,并在新节点上将数据库重启,客户端通过VIP来访问数据库,保障了在节点宕机、数据库启动失败、崩溃等情况下客户端的可靠性以及数据库的高可用性。这一点和第1.2节中的高可用方案有本质区别,后者只有当节点宕机时,VIP才会动态的漂移。
图2 基于Grid Infrastructure集群的MYSQL数据库高可用方案架构
本文分析了目前基于Grid Infrastructure的ORACLE RAC数据库高可用解决方案,提出了一种新型的基于Grid Infrastructure的MYSQL数据库高可用架构,并且由于MYSQLS数据库开源易得,可以有效地节省用户的购置成本。