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等各种数据库接口。