数据库集群是通过多台数据库服务器构成的虚拟单一数据库逻辑映像以透明方式向客户端提供数据服务。其核心要素包括多节点协作与二进制兼容通讯协议确保服务连续性主备及负载均衡多主能力。集群技术主要区分同步与异步数据更新机制并涵盖基于连接或请求的负载均衡模式。系统性能、数据可靠性与服务可用性构成三大技术指标其中冗余设计可实现理论零数据丢失。市场主流分类包括基于串行复制的备份架构、共享存储的双机容错方案、Oracle RAC应用级集群以及实时同步技术驱动的负载均衡系统。早期集群技术多源自数据备份领域如日志传送与镜像技术。Oracle RAC作为专用性能优化方案出现后采用共享存储架构提升处理能力。实时同步集群作为新兴方向通过独立网关或引擎集成方式实现分布式事务管理突破传统单点故障限制例如DBTwin与Moebius通过冗余设计与日志压缩技术提升同步效率。定义一、数据库集群的定义这里有两个关键点1、两台或者多台数据库服务器如果只有一台数据库服务器是不能称其为集群的。2、透明的服务集群向客户端提供的服务与单机系统向客户端提供的服务从通讯协议上保持二进制兼容。注释这里的“二进制兼容”通俗来说就是对客户端完全透明。在数据库集群的语境下它的具体含义是客户端无感知你的应用程序客户端根本不需要知道自己连接的是一台单机数据库还是一个由几十台服务器组成的庞大集群。无需修改代码或配置连接集群时你不需要对客户端的代码、驱动程序或连接配置做任何特殊的修改。原本用来连接单机的程序可以直接无缝地连接到集群上正常工作。协议层面一致集群对外暴露的通信接口和数据传输格式即底层的二进制数据包结构与单机系统保持完全一致。二、相关名词解释1、同步数据库客户端发出数据更新请求后要等集群的每个节点全部更新后才给客户端返回结果。2、异步数据库客户端发出数据更新请求后接受请求的节点这里往往是主数据库立马给客户端返回结果被更新的数据则会在接下来的某个时间里被复制传输到集群的其它节点上弱一致性处理。3、基于连接的负载均衡此种负载均衡实现技术比较简单就是在客户端发起登陆的时候按照某种负载均衡算法选择登陆到集群某台数据库此后所有客户端的请求全部会发送到此数据库上。4、基于请求的负载均衡此种负载均衡实现技术比较复杂但是功能强大就是在客户端发起登陆的时候集群网关会同时登录到集群各节点数据库此后所有的客户端请求经过集群网关的分析被分成两类查询请求根据负载均衡算法挑选一个节点执行数据更新请求则由主机执行并实时同步数据到集群各节点。性质一、与分布式数据库系统的区别1、数据库集群有的具有单份数据集有的具有两份或多份相似的数据集有的具有两份或多份实时一致的数据集而分布式数据库系统往往具有完全不同的数据集。2、数据库集群往往是同构的系统要求集群各节点都具有相同的操作系统和数据库系统版本甚至补丁包的版本也要求保持一致而分布式数据库系统可以是异构系统包含不同的操作系统和不同的数据库系统。3、数据库集群往往建立在高速局域网内而分布式数据库系统既可以是高速局域网也可以是跨部门、跨单位的异地远程网络。二、数据库集群的技术指标由于数据库系统是任何一个信息系统的核心因此除了业务逻辑之外用户还关心下面三点1、系统性能性能问题涉及硬件、软件、网络、应用设计架构、代码质量等多方面。但是数据库集群如果能提供负载均衡能力和自动优化能力则是对整个系统性能具有莫大的好处。2、数据可靠性在系统发生任意故障包括操作系统、数据库引擎、硬盘或磁盘阵列或存储网络等故障条件下数据丢失的可能性。有的系统从设计原理上注定了必然会存在理论上的数据丢失可能性而有的系统因为冗余设计原理可以保证理论上的数据零丢失。用容灾领域的术语来讲这类似于RPORecovery Point Objective但是不完全等同于RPO。3、服务可用性在系统发生任意故障包括操作系统、数据库引擎、硬盘或磁盘阵列或存储网络等故障条件下整个系统停止对外提供数据服务的可能性。与上面的数据库可靠性紧密关联如果一个系统从理论上存在数据丢失的可能性那么这样的系统必然会导致整个系统的服务停止。同样地用容灾领域的术语来讲这类似于RTORecovery Time Objective但是也同样不能完全等同于RTO。三、数据库集群的分类在市场上数据库集群是一个笼统的名词没有一个权威的定义各市场参与者往往是各取所需推出各种特色的数据库集群解决方案。一般地具有下列四种集群方案1、基于串行数据复制技术串行复制技术本来是用于数据传送和数据备份的离人们熟悉的“数据库集群”的概念有一定的距离。但是由于计算机软硬件技术和网络通讯技术的快速发展使得利用这种概念和技术构成的“数据库集群”有了一定的可行性。此类集群又可以分两类:a、串行异步复制此种方式是数据的异步串行复制。主要采用数据库事务日志传送或者硬盘数据块传送技术来实现SQL Server自带的复制、镜像和SQL2012新出的AlwaysON备机可读以及第三的一些镜像Mirror技术都是属于此类产品此类技术和产品本质上就是数据备份技术和产品。下列以事务日志传送Log Shipping为例来说明。主数据库完成事务处理后生成事务处理日志日志记录通过FIFO队列进入备份数据库处理从而得到备份数据。此种方式的缺陷在于a、主数据库并行处理事务而日志拷贝是串行的而备份数据库处理日志记录也是串行的。因此FIFO队列的溢出随时可能发生。一旦发生队列必须重建从而需要重新建立备份数据库。此种方法对于一般客户来讲是不可行的。b、由于日志拷贝是异步的主备数据库不是实时一致两者之间存在“时间差”因此如果用备份数据库作负荷均衡这样的应用存在逻辑上的漏洞可能会发生数据错乱。c、由于主备数据存在时间差, 主数据库一旦发生事故理论上一定会丢失数据。在这种情况下要么需要手工恢复数据库这会消耗大量的人工成本或者数据根本就不能恢复。d、对主机的性能影响根据测试一般在15%到25%之间。b、串行同步复制此类集群往往是由昂贵的专用软硬件构成的原理图如图此类系统采用专用的高速网络和软件技术将每个数据库的请求通过同步复制的方式同步在主备两台数据库服务器上执行正确后才将结果返回给数据库客户。此系统的特点是a) 主数据库被强迫与备份数据库同步串行处理因此性能受到限制。b) 主备数据库中任意一个出现问题都会迫使事务处理交易回滚因此整个系统的可靠性比单机系统降低了一半。c) 由于以上问题这种备份方式只适用于近距离光纤网络5英里。d) 专用系统造价昂贵又加上述明显缺陷因此市场上很少被采用。2、基于共享存储的双机容错技术从技术适应性的角度讲双机容错比较适合于无状态应用或者状态信息较少的应用切换以此达到应用级的高可用性目的其实并不适合于数据库级的应用切换。此种结构往往是两个服务器共享一个磁盘阵列这里两个服务器共享一个虚拟的IP供数据库客户使用形成一个单一的逻辑数据库映象。此种所谓的数据库集群的目的是一旦主机系统出现问题备份系统通过心跳机制的检测完成从主机系统到备份系统的切换。这种方案在市场上被称为“双机集群”或者“双机热备”简称参见“双机”但微软称之为“故障转移集群”。它有下列特点a. 此种高可用性解决方案只是无状态系统典型的如Web服务器的普通容错切换思想在数据库领域的应用。b. 此系统本身只有一个单一的数据映象数据储存在共享的磁盘阵例上因此共享的磁盘阵列成为了整个系统的单点错误源。c. 由于是单一数据映象因此必须采用通常的复制或备份方法获取第二份数据以保证数据的安全性。因此所有复制或备份方法的缺点此类系统全部存在。d. 主机系统和备份系统之间是没有任何负载均衡关系的在正常情况下备份系统是闲置在那里因此对用户来说是一种投资浪费。e. 在错误切换的时候往往存在切换时间长而且更严重的是可能会存在丢失用户交易数据丢失的现象结果导致系统被迫停止服务或者需要人工修复数据或者数据永远找不回来。3、以Oracle RAC为代表的系统RAC的英文全称是Real Application Cluster真正的应用级集群。我们需要关注的是“应用级”。为了缓解数据库系统日益增长的性能压力Oracle公司推出了RAC系统。它基本结构如下此类系统专门是针对数据库性能问题而提出的。采用共享磁盘阵列的方式因此在结构上和上述双机容错相似不同的地方在于此系统中的数据库节点之间采用的不是简单的心跳检测而是Oracle公司自己定义的一套复杂的信息交换协议以此来动态分配来自数据库客户端的请求。它的特点是a. 是个应用级的集群也就是针对Oracle的数据库管理系统因为数据库管理系统对于操作系统来讲就是一个“应用程序”因此被称为“应用级集群”专门为提高数据库性能而设计。b. 此系统本身只有一个单一的数据映象数据储存在共享的磁盘阵列上因此共享的磁盘阵列成为了整个系统的单点错误源。c. 管理配置复杂。d. 由于是单一数据映象因此必须采用通常的复制或备份方法获取第二份数据以保证数据的安全性。因此所有复制或备份方法的缺点此类系统全部存在。e. 由于数据库系统本身具有高I/O的特性因此RAC系统里磁盘I/O是提高性能的关键地方。f. 依据不同的数据库应用有的性能有所提升有的性能可能会反而下降。应用一、基于实时数据同步技术基于此技术构造的数据库集群是市场上的新兴力量它又具有两类分别是a、具有独立网关下面以DBTwin为例来说明其技术特点。DBTwin采用了冗余设计原理对于来自客户端的请求请求被分成两类查询请求和数据更新请求。对于数据更新请求集群内部各节点之间保持数据的实时同步一致对于数据的查询请求则可以在集群各节点之间负载均衡执行。它的特点是a、负载均衡的单元是客户端的每个独立请求这点除了Oracle RAC集群是市场上独有的。b、实时冗余一致的多份数据从理论上讲实现了数据的零丢失。c、由于可以做到数据零丢失因此在系统发生任意故障条件下可以做到系统的对外服务不停止。d、此系统使用了专用高速数据同步技术根据测试数据同步速度能SQL Server的镜像相等。e、此系统的缺点是数据同步需要花费代价节点数量受到限制一般2到4个节点为宜。f、 此系统从宏观上提升了整个系统的性能。b、将调度节点集成于数据库引擎下面以Moebius来说明其技术特点。任何在数据库和应用程序之间引入的中间件都同时引入了单点故障点如果中间件网关出现了故障则数据库集群就会形同虚设。因此Moebius在集群中的每个节点上都存在于嵌入于数据库引擎的分发代理当前负责调度的分发代理出现故障时分发代理会故障转移到集群中的其他节点从而避免了使用网关架构所引入的单点故障点除此之外该类产品的特点是a、负载均衡是基于每个客户端的独立请求默认规则是将查询优先分发到集群中负载低的服务器也可以自定义规则将某些特定业务分发到集群中的某一台比如将报表相关的查询分发给集群中的特定服务器。b、 采用Share-Nothing架构对数据进行冗余从而保证了数据的安全性。c、 数据库同步机制采用日志Redo的方式在日志同步之前对日志进行压缩保证了同步效率。d、 在集群中任意节点出现故障时会被自动剥离出节点由剩余运行正常的节点继续提供服务从而保证了最小停机时间。e、 负载均衡集群从宏观上提高了吞吐量和性能。f、 该类集群不需要特殊的存储设备可以使用廉价的本地存储但由于数据冗余因此相较于Share-Disk架构而言需要更多的存储空间。c、没有独立网关当前市场上也存在下列一种基于数据实时同步的集群其拓扑结构如图所示此系统由于没有独立的集群网关因此本质上简化成了数据库的实时备份系统与实际的备份系统不同的是它是工作在数据库应用层。此系统的特点a、 没有独立的集群网关通过主节点的转发来实行查询的负载均衡。在系统压力大的情况下集群主机会形成性能瓶颈无论是CPU、内存还是网络带宽也可能是OS等系统内核资源都容易因到达临界状态而形成瓶颈。b、 各节点数据实时一致对于数据容错有利。c、 对客户端没有二进制透明。d、 负载均衡单元是数据库连接。也就是说在客户端登陆数据库的时候静态地指定连接到某个集群节点此后此连接上的全部请求一律发送到该数据库上因此在特殊情况下可能会出现这样的场景所有客户端的连接集中在集群主机上这时候集群主机不但承担了客户端的所有查询还需要实时同步数据到所有的集群从机即集群主机的CPU为100%而集群别的节点CPU可能为0%这样整个系统的性能会受到严重影响。e、 由于使用的是分布式事务机制(MSDTC)确保数据的实时一致性因此数据同步的性能比较慢根据测试,会比SQL Server镜像慢好几倍。f、 同样地此集群的节点数量也受到限制也是以2到4个节点为宜。转自https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E9%9B%86%E7%BE%A4/9695098