DBTwin数据库集群系统技术白皮书无锡浙潮科技有限公司2010年1月目录1.当前数据库用户面临的问题 (3)2.当前市场上存在的针对数据库的解决方案 (4)3.DBTWIN数据库集群 (8)4.DBTWIN的实现原理 (9)5.DBTWIN的特性 (10)6.DBTWIN技术指标 (11)7.DBTWIN与备份/复制软件,及数据库镜像的功能、特点比较 (12)8.DBTWIN支持的系统环境 (12)1.当前数据库用户面临的问题随着信息时代的发展,公司和企业的运作越来越依赖于计算机系统。
大量有关企业生产、销售的数据维系着企业的生存,是企业珍贵的无形资产。
这些数据一旦因为存储系统遭受到失窃、断电或不可避免的自然灾害,造成大量丢失,将会给企业带来重大的经济损失。
根据Gartner的调查数据,在经历大型灾难事件而导致系统停运的公司中,有五分之二左右的公司再也没有恢复运营,剩下的公司中也有接近三分之一在两年内破产了。
而由于数据库的故障导致的重大事故确是时有发生的,让我们来看几个实例:实例1:2005年12月5日,国内某著名网络游戏公司的数据库服务器出现严重宕机事故,造成众多玩家数据丢失并蒙受经济损失实例2:2005年6月9日某证券公司股票交易系统的数据库出现故障,股票无法正常买卖,迫使股民望“红”兴叹。
实例3:2002年7月23日国内某机场数据库系统宕机,导致6000名旅客长时间滞留机场。
实例4:2000年国内某银行的支付系统突然死机,给广大用户造成极大的损失和不便。
以上发生的这些事件都是与企业数据库系统相关的故障。
另外,几乎每个数据库客户都或多或少地存在数据库性能问题,当然数据库性能问题涉及很多方面,其中,能否采用“集群”的方法来提高性能,我们公司研究的重点。
概括来讲,当前数据库系统已经成为了企业信息系统的瓶颈,究其原因,各厂家的解决方案无外乎在下列三大方面无法取得同步的进展:1)数据库数据可靠性2)数据库系统性能3)系统服务的可用性当前几乎所有的数据库系统解决方案,都无法的象真正的集群系统那样,在上述三方面同时具有良好的可伸缩性,具体来讲,当前数据库系统存在下列各种各样的问题:1.企业只有一份实时生产数据集,一旦主数据库系统发生故障,将导致业务中断,数据恢复很麻烦,甚至丢失部分数据。
2.目前的实时数据备份采用主备机串行复制数据的方式,该方式延长了业务处理的时间,降低了系统的工作效率,增大了系统出错几率。
3.在实际的工作中,数据库系统宕机事件时有发生,无法完全实现7X24小时不停机服务4.在实行异步数据备份的数据库系统中,备份数据库的资源被极大地浪费了5.现有数据库的升级方式多为向上扩展方式,即:服务器—〉小型机—〉大型机的升级方式,既不经济,又缺乏伸缩性。
6.数据库系统属于磁盘密集型操作,现有的数据库系统解决方案在应对大规模、频繁访问时(如电子交易网站等),存在I/O瓶颈,2.当前市场上存在的针对数据库的解决方案由于“集群”概念的广为人知,因此,不少公司推出了针对数据库的“集群”解决方案。
但是,我们进行仔细的甄别之后,发现当前市场上存在的,除我们的DBTwin数据库集群解决方案之外,主要是下面三类产品之一或者是它们的适当组合。
A.基于串行复制技术串行复制技术,本来是用于数据复制和数据备份的,离人们熟悉的“数据库集群”的概念有一定的距离。
但是由于计算机软硬件技术和网络通讯技术的快速发展,使得利用这种概念和技术构成的“数据库集群”有了一定的可行性。
此类集群,又可以分两类:1.串行异步复制。
日志复制数据库客户主数据库备数据库图1. 日志复制示意图此种方式是异步串行复制或日志拷贝(Log Shipping)。
主数据库完成事务处理后,生成事务处理日志,日志记录通过FIFO 队列,进入备份数据库处理,从而得到备份数据。
此种方式的缺陷在于:a. 日志性能问题:在实际的应用场景中,经常发现数据库用户为了数据库性能而关闭了事务日志功能,从而导致此方法的不可用。
也就是说,想要采用此方法构建一个“数据库集群”的话,那么单单主数据库为了具有日志功能,就需要花费很大的性能代价。
b. 复制队列溢出问题:主数据库是并行处理而日志拷贝是串行的,因此备份数据库处理日志记录也 是串行的。
因此,FIFO 队列的溢出随时可能发生。
一旦发生,队列必须重建,从而需要重新建立备份数据库。
此种方法对于一般客户来讲是不可行的。
c. 或者为了避免队列溢出,必须保证主数据库处理事务的速度小于备份数据库,这样将严重束缚主数据库的性能发挥。
d. 由于日志拷贝是异步的,主备数据库不是实时一致。
因此无法用备份数据库作负荷均衡。
e. 由于主备数据库永远不一致, 主数据库一旦发生事故,就一定会丢失数据。
在这种情况下,要么需要手工恢复数据库,这会消耗大量的人工成本,或者数据根本就不能恢复。
2. 串行同步复制。
此类集群往往是由昂贵的专用软硬件构成的,原理图如下:图2. 硬件级同步复制示意图此类系统采用专用的高速网络和软件技术,将每个数据库的请求,通过同步复制的方式,同步在主备两台数据库服务器上执行正确后,才将结果返回给数据库客户。
此系统的特点是:f. 主数据库被强迫与备份数据库同步串行处理,因此性能受到限制。
数据库客户数据库 1 数据库 2高速专用同步复制网络g. 主备数据库中任意一个出现问题,都会迫使事务处理交易回滚,因此整个系统的可靠性比单机系统降低了一半。
h. 由于以上问题,这种备份方式只适用于近距离光纤网络(5英里)。
i. 专用系统造价昂贵,又加上述明显缺陷,因此市场上很少被采用。
B . 基于双机容错技术从技术适应性的角度讲,双机容错比较适合于无状态应用,或者状态信息较少的应用切换,以此达到应用级的高可用性目的,其实并不适合于数据库级的应用切换。
图3. 数据库双机示意图此种结构往往是两个服务器共享一个磁盘阵列,这里两个服务器共享一个虚拟的IP 供数据库客户使用,形成一个单一的逻辑数据库映象。
此种所谓的数据库集群的目的是,一旦主机系统出现问题,备份系统通过心跳机制的检测,完成从主机系统到备份系统的切换,它有下列特点:a. 此种高可用性解决方案只是无状态系统(典型的如Web 服务器)的普通容错切换思想在数据库领域的应用。
b. 此系统本身只有一个单一的数据映象,数据储存在共享的磁盘阵例上,因此共享的磁盘阵例成为了整个系统的单点错误源。
c. 由于是单一数据映象,因此必须采用通常的复制或备份方法获取第二份数据,以保证数据的安全性。
因此所有复制或备份方法的缺点,此类系统全部存在。
d. 主机系统和备份系统之间是没有任何负载均衡关系的,在正常情况下,备份系统是闲置在那里,因此对用户来说是一种投资浪费。
数据库客户 DB 引擎 1 DB 引擎 2心跳线 虚拟IP 共享阵列e. 在错误切换的时候,往往存在切换时间长,而且更严重的是存在丢失用户交易数据丢失的现象,结果导致系统被迫停止服务,或者需要人工修复数据,或者数据永远找不回来。
f. 在错误切换的时候,有时候会发生备份系统的数据库启动不了的情况,这时候,整个数据库系统也就无法访问了。
C . 以RAC 为代表的系统RAC 的英文全称是:Real Application Cluster(真正的应用级集群)。
我们需要关注的是“应用级”。
为了缓解数据库系统日益增长的性能压力,ORACLE 公司推出了RAC 系统。
它基本结构如下:图4. ORACLE RAC 示意图此类系统,专门是针对数据库性能问题而提出的。
采用共享磁盘阵列的方式,因此在结构上和上述双机容错相似,不同的地方在于此系统中的数据库节点之间采用的不是简单的心跳检测,而是ORACLE 公司自己定义的一套复杂的信息交换协议,以此来动态分配来自数据库客户端的请求。
它的特点是:a. 是个应用级的集群,也就是针对ORACLE 的数据库管理系统(因为数据库管理系统对于操作系统来讲,就是一个“应用程序”,因此被称为“应用级集群”),专门为提高数据库性能而设计。
b. 此系统本身只有一个单一的数据映象,数据储存在共享的磁盘阵例上,因此享的磁盘阵例成为了整个系统的单点错误源。
c. 管理配置复杂。
数据库客户 DB 引擎 1 DB 引擎 2RAC 虚拟网络 虚拟IP 共享阵列d. 由于是单一数据映象,因此必须采用通常的复制或备份方法获取第二份数据,以保证数据的安全性。
因此所有复制或备份方法的缺点,此类系统全部存在。
e. 由于数据库系统本身具有高I/O 的特性,因此,RAC 系统里,磁盘I/O 是提高性能的关键地方。
综合上所述,针对数据库系统普遍存在的三大方面的问题,上述各个技术和方案,各有不同的侧重,实现的代价和复杂度也各不相同,但是它们有共同的特点是:只解决数据库系统的某一方面的问题,甚至在解决这方面问题的时候,同时加重了另外一个或两个方面的问题。
3. DBTwin 数据库集群DBTwin 是北京浙潮科技基于动态并发事务的理念设计出的新型数据库集群软件,对当前数据库集群领域是一次革命性的突破。
由DBTwin 构成的新型数据库集群在数据安全性、高性能和服务可用性方面均具有非常好的伸缩能力,因此,我们称其为“数据库扩展器”(Database Scaler )。
数据库扩展器DBTwin 允许同时连接n 个数据库,由DBTwin 网关对它们进行统一管理。
而对于客户端来讲,DBTwin 屏蔽了后面的n 台数据库,它看到的只是由DBTwin 网关表现出来的一个虚拟数据库服务,只连接客户端只需要连接此虚拟的IP 和端口,就能象访问普通数据库那样进行操作。
DBTwin 数据库集群的原理结构如下图所示:图5. DBTwin 工作示意图数据库 1 数据库 2 数据库 n DBTwin 网关 DBTwin 网关 数据库客户 双机热备DBTwin最大的特色是能够对访问数据库的事务(Transaction)进行并发地处理:当DBTwin网关接收到插入、修改、更新等事务操作时,它同时将这个事务(Transaction)发送到后面连接的n台数据库上,这样n台数据库中的数据同时得到了更新;由于在任何时刻,DBTwin网关后面连接的n台数据库的数据是完全一致的,因此当DBTwin网关接收到查询操作时,整个数据库系统可以实现负载均衡(Load Balance),由此达到客户访问负荷的动态分担,提高整个系统的响应能力。
4.DBTwin的实现原理DBTwin是一个中间件服务软件,它工作在微软的数据库专用协议TDS层之上,如下图所示:图6. DBTwin工作层TDS(Tabular Data Stream表格数据流)是微软数据库客户端与SQL Server服务器进行通讯的未公开协议,DBTwin就工作在这一层,因此,DBTwin能支持所有的SQL Server客户端数据组件。