<
 
基于数据复制技术构成的数据库容灾难解决方案
    当前,信息化建设越深入,数据的安全性就越重要,因此各地方,各单位花了大量的财力,人力和物力来建设数据容灾系统,我们国家还专门起草了《重要信息系统灾难恢复指南》,帮助并指导全国的数据安全工作。

    当前的灾难恢复系统,不论是建在本地的,还是远程备份系统,是建立在数据复制或近实时的数据备份的基础上的。下面我们以市场上著名的美国Steeleye公司的Lifekeeper软件为例,做一下技术上的分析:


图1. 采用Lifekeeper同步数据复制技术和双机备份软件构造的数据库集群
    此种集群其实不是真正的数据库集群。它往往是非共享磁盘方式的,采用了数据库的复制技术,无论是硬件镜像,还是基于文件系统,或者是基于数据库事务日志传送。此种系统使用数据复制技术,在备份系统上得到另外一份数据,同时利用双机容错软件,在主系统出现错误的情况下,将服务切换到备份系统上。根据数据复制的不同,可以分成两种类型:
基于同步数据库复制技术
    此种系统的缺点是很明显的:由于采用了同步数据复制技术,因此提高了整个系统出错的可能性,也就是降低了整个系统的可靠性。同时,整个系统的性能也会明显降低。正是因为同步数据库复制有这两大明显的缺点,因此在实际的系统部署中,同步复制技术使用得非常少见。
基于异步数据库复制技术
    采用此种异步数据复制技术建立的数据库集群系统,系统结构参见上图1所示,和前面1)不同的只是NT Server1和NT Server2之间采用了异步数据复制的技术。此种集群由于异步数据复制固有的缺陷,导致主系统在出错的情况下,用户不敢切换到备份系统上去,而且也存在可能,即使用户敢切换也不能切换过去,因为备份系统的数据库内部数据不一直,数据库无法正常启动。

由于现有的备份和复制技术是基于串行的,因此它们存在一些固有的根本性的缺陷。下面分两种类别进行阐述:

串行异步

图5. 串行异步数据备份/复制技术示意图
    此种方式是异步串行复制或日志拷贝(Log Shipping)。 主数据库完成事务处理后,生成事务处理日志,日志记录通过FIFO队列,进入备份数据库处理,从而得到备份数据。此种方式的缺陷在于:

    1)主数据库是并行处理而日志拷贝是串行的,因此备份数据库处理日志记录也 是串行的。因此,FIFO队列的溢出随时可能发生。一旦发生,队列必须重建,从而需要重新建立备份数据库。此种方法对于一般客户来讲是不可行的。

    2)或者为了避免队列溢出,必须保证主数据库处理事务的速度小于备份数据库,这样将严重束缚主数据库的性能发挥。

    3)由于日志拷贝是异步的,主备数据库永远不一致。因此无法用备份数据库作负荷均衡。

    4)由于主备数据库永远不一致, 主数据库一旦发生事故,就一定会丢失数据。在这种情况下,要么需要手工恢复数据库,这会消耗大量的人工成本,或者数据根本就不能恢复。

串行同步

图6. 串行同步数据备份/复制技术示意图
    此种方式是同步串行复制。虽然不存在前面温备份那样的队列溢出问题,但是它的缺陷还是很明显的:

    1)主数据库被强迫与备份数据库同步串行处理,因此性能受到限制。
    2)主备数据库中任意一个出现问题,都会迫使事务处理交易回滚,因此整个系统的可靠性比单机系统降低
       了一半。
    3)由于以上问题,这种备份方式只适用于近距离光纤网络(5英里)。
    4)此种专用系统造价昂贵,又有上述明显缺陷,因此市场很少被采用。