A. 基于串行复制技术
此类集群,又可以分两类:
1. 串行异步复制
此种方式是异步串行复制或日志拷贝(Log Shipping)。 主数据库完成事务处理后,生成事务处理日志,日志记录通过FIFO队列,进入备份数据库处理,从而得到备份数据。此种方式的缺陷在于:日志性能问题和复制队列溢出问题。
由于日志拷贝是异步的,主备数据库不是实时一致。因此无法用备份数据库作负荷均衡。 由于主备数据库永远不一致, 主数据库一旦发生事故,就一定会丢失数据。在这种情况下,要么需要手工恢复数据库,这会消耗大量的人工成本,或者数据根本就不能恢复。
2. 串行同步复制
此类系统采用专用的高速网络和软件技术,将每个数据库的请求,通过同步复制的方式,同步在主备两台数据库服务器上执行正确后,才将结果返回给数据库客户。 此系统的特点是: 主数据库被强迫与备份数据库同步串行处理,因此性能受到限制。 主备数据库中任意一个出现问题,都会迫使事务处理交易回滚,因此整个系统的可靠性比单机系统降低了一半。
B. 基于双机容错技术
从技术适应性的角度讲,双机容错比较适合于无状态应用,或者状态信息较少的应用切换,以此达到应用级的高可用性目的,其实并不适合于数据库级的应用切换。
此种结构往往是两个服务器共享一个磁盘阵列,这里两个服务器共享一个虚拟的IP供数据库客户使用,形成一个单一的逻辑数据库映象。此种所谓的数据库集群的目的是,一旦主机系统出现问题,备份系统通过心跳机制的检测,完成从主机系统到备份系统的切换
C. 以RAC为代表的系统
RAC的英文全称是:Real Application Cluster(真正的应用级集群)。我们需要关注的是“应用级”。为了缓解数据库系统日益增长的性能压力,ORACLE公司推出了RAC系统。它基本结构如下:
此类系统,专门是针对数据库性能问题而提出的。采用共享磁盘阵列的方式,因此在结构上和上述双机容错相似,不同的地方在于此系统中的数据库节点之间采用的不是简单的心跳检测,而是ORACLE公司自己定义的一套复杂的信息交换协议,以此来动态分配来自数据库客户端的请求。
综合上所述,针对数据库系统普遍存在的三大方面的问题,上述各个技术和方案,各有不同的侧重,实现的代价和复杂度也各不相同,但是它们有共同的特点是:只解决数据库系统的某一方面的问题,甚至在解决这方面问题的时候,同时加重了另外一个或两个方面的问题。
DBTwin数据库集群
DBTwin它以非入侵的方式部署,最大的特色是能够对访问数据库的事务(Transaction)进行并发地处理:当DBTwin网关接收到插入、修改、更新等事务操作时,它同时将这个事务(Transaction)发送到后面连接的n台数据库上,这样n台数据库中的数据同时得到了更新;由于在任何时刻,DBTwin网关后面连接的n台数据库的数据是完全一致的,因此当DBTwin网关接收到查询操作时,整个数据库系统可以实现负载均衡(Load Balance),由此达到客户访问负荷的动态分担,提高整个系统的响应能力。