国产基础软件集群平台技术与应用
上QQ阅读APP看书,第一时间看更新

1.3.3 数据库共享存储集群

本小节主要介绍数据库共享存储集群的概念、架构设计和特性。

1.概念

数据库共享存储集群(Data Shared Cluster,DSC),允许多个数据库实例同时访问、操作同一数据库,即是一个多实例、单数据库的系统,具有高可用性、高性能、负载均衡等特性。用户可以登录集群中的任意一个数据库实例获得完整的数据库服务。此外,DSC支持故障自动切换和故障自动重加入,也就是某一个数据库实例发生故障后,仍然可以提供数据库服务。

DSC得以实现的重要基础就是共享存储,支持的共享存储有两种:裸设备和自动存储管理(Auto Storage Management,ASM)。这两种存储的区别在于后者在前者的基础上,也就是ASM文件系统。

2.架构设计

数据库共享存储集群主要由数据库和数据库实例、共享存储、本地存储、通信网络、集群同步服务(Cluster Synchronization Services,CCS)组成。下面以部署了ASM文件系统的DSC为例,展示DSC系统架构,如图1-3所示。

(1)数据库和数据库实例。

数据库是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件等),保存在物理磁盘或文件系统中。

数据库实例就是一组操作系统进程(或者是一个多线程的进程)和一些内存。通过数据库实例可以操作数据库。一般情况下,访问、修改数据库都是通过数据库实例来完成的。

(2)共享存储。

DSC中,为了实现多个实例同时访问、修改数据,要求将数据文件、控制文件、重做日志文件保存在共享存储中。DSC支持使用裸设备或ASM文件系统作为共享存储。

配置DSC所需的DM集群注册表(DM Clusterware Registry,DCR)、表决磁盘(VOTD Disk,VTD)也必须保存在共享存储上(目前仅支持裸设备存放DCR和VOTD Disk)。

图1-3 DSC的系统架构

(3)本地存储。

DSC中,本地存储用来保存配置文件(记录数据库实例配置信息的dm.ini、dmarch.ini、dmmal.ini)、本地归档日志和远程归档日志。

(4)通信网络。

DSC中,通信网络分为内部网络和公共网络两个部分。在实际应用中,一般还存在服务器到共享存储的网络。内部网络用于数据库实例之间交换信息和数据。公共网络用于对外提供数据库服务,用户使用公共网络地址登录DSC,访问数据库。

(5)集群控制。

集群控制是集群的重要组成部分。CSS就是一款集群控制软件,专门负责监控集群中各个节点的运行状态。CSS的主要功能包括管理集群的启动和关闭、处理控制节点故障,以及管理节点重加入流程。

(6)重做日志。

重做(Redo)日志是记录改变物理操作的日志。

3.特性

DSC的主要特性包括高可用性、高吞吐量和负载均衡。

(1)高可用性:只要集群中有一个活动节点,就能正常提供数据库服务。

DSC提供了一种数据库可用性极高的解决方案。当出现系统故障、硬件故障,或者人为操作失误时,CSS检测故障,并自动将故障节点踢出集群,保障数据库服务的正常提供。

故障节点的用户连接会自动切换到活动节点,这些连接上的未提交事务将被回滚,已提交事务不受影响;活动节点的用户连接不受影响,正在执行的操作将被挂起一段时间,在故障处理完成后,继续执行。

当CSS检测到故障节点恢复时,自动启动节点重加入流程,将恢复的故障节点重新加入DSC,将集群恢复到正常的运行状态。因此,通过部署DSC,可以在一定程度上避免由软、硬件故障引起的非计划停机情况的发生,减少这些意外给客户带来的损失。

与同样使用共享存储的双机热备系统相比,DSC具有更快的故障处理速度。双机热备系统故障切换时,需要重做完整的Redo 日志,所有数据都需要重新从磁盘加载,而DSC处理故障时,只需要重做故障节点的Redo日志,并且大部分数据页已经包含在处理节点的 Buffer 缓冲区中,不需要重新从磁盘加载。

(2)高吞吐量:多个节点同时提供数据库服务,有效提升集群的整体事务处理能力。

DSC中包含多个数据库实例,数据库实例访问独立的处理器、内存,数据库实例之间通过缓存交换技术提升共享数据的访问速度,且每个数据库实例都可以接收并处理用户的各种数据库请求。

与单节点数据库管理系统相比,DSC可以充分利用多台物理机器的处理能力,支撑更多的用户连接请求,提供更高的吞吐量。与双机热备系统相比,DSC不存在始终保持备用状态的节点,不会造成硬件资源的浪费。

(3)负载均衡:用户的连接请求被平均分配到集群中的各个节点,确保各个节点的负载大致平衡。

用户通过配置数据库负载均衡组件来访问DSC,可以实现节点间的自动负载均衡,用户的数据库连接请求会被自动、平均地分配到 DSC 中的各个节点,并且连接服务名支持JDBC、DPI、ODBC、DCI、.Net Provider等各种数据库接口。