Web服务器和应用服务器的容灾主要有两种技术,一种是高可用集群(High
Availability Cluster
),另一种是负载均衡集群(Load
Balance Cluster
),下面分别予以介绍。

l高可用集群
26827495_1375950755Qw42.png

高可用集群的基本方式是为每个服务器设置一个备份服务器,备份服务器可以使本地的,也可以是远程的,两台服务器通过心跳(HeartBeat)机制连接,备份服务器可通过该机制监控主服务器状态,一旦发现主服务器不能正常工作,则由备份服务器接替出现问题的主服务器。

为了提高备份服务器的利用效率,可以在备份服务器上部署其他应用,兼做备份服务器,或者配置成两台服务器互为备份,如A服务器是应用a的主服务器,是应用b的备份服务器,B服务器是应用a的备份服务器,是应用b的主服务器。



l负载均衡集群

如果需要的Web服务器或应用服务器比较多,可以采用负载均衡集群,使用负载均衡器连接同类服务器(如Web服务器),由负载均衡器自动平衡各Web服务器的负载,一旦某台服务器出现故障,负载均衡器自动将该服务器的负载均匀分布到剩下的正常服务器上,从而避免单点故障,获得更高的可用性。
26827495_1375950812t3TE.png

沃信科技数据库容灾

前面已经分析过,对于数据库中数据的容灾,有多种技术,包括最基础的磁带冷备份方式,到磁盘复制、存储网络复制、主机逻辑卷复制、数据库级复制等多种联机数据复制方式,但是为了保证业务数据的完整性、一致性和备份系统的可用性,还是数据库级复制方式更好。



沃信的数据库容灾方案是基于自有产品的数据库容灾方案,包括数据迁移、数据同步两大主要功能,在此过程中还可以进行数据验证,保证迁移和同步的数据质量。下面分别予以介绍。



沃信科技数据迁移

26827495_1375950979jpMn.png

 

数据库容灾的第一步是将源数据库在某个时间点的初始数据先迁移到目标数据库中,再通过数据同步工具,将源数据库该时间点后发生的事务同步到目标数据库中,这个步骤是通过分析源数据库的事务日志(Redo
Log
)来实现的,从Redo Log中分析出交易定义和SQL语句,在目标数据库中重做该SQL语句,从而实现源数据库和目标数据库的一致性。

数据迁移的步骤当然可以通过离线冷备份的方式在目标数据库中恢复,但这种方式对生产系统影响较大。沃信数据迁移工具允许在不停机的条件下进行初始数据迁移,可以由用户指定库/用户模式//事务进行不同粒度的数据迁移,避免传输不需要的数据,降低带宽占用,提高传输效率。



在传输过程中支持断点续传,如果网络中断,迁移工具会记录断点,网络恢复后会从断点处继续传输。



在数据库同步过程中,大对象的更改可能是不记录日志的,还有Sequence等缓存在内存中的数据是不能通过数据库同步工具准确同步的,沃信的数据迁移工具也可以处理这些数据,将这些数据准确迁移到备份数据库中。



沃信数据迁移工具的效率非常高,采用了数据库底层的批量数据移动技术,比普通SQL语句载入效率有大幅度的提升。



1.1.1.2沃信科技数据同步 

26827495_137595101008ZA.png

 

沃信数据同步工具不需要在生产系统和备份系统上安装任何程序,只需要一个具有操作相应数据权限的数据库连接即可。

沃信数据同步工具的抽取组件从源数据库的联机日志(Online Log)和归档日志(Archive
Log
)中捕获数据库日志(Redo Log)记录,再通过分析组件对获取的Redo
Log
进行分析,获取完整的交易记录和针对每个数据库表操作的SQL语句,然后通过装载组件在目标数据库中执行该SQL语句,同步数据库变更。



该方案同步的实际上市数据库的变化,传输的数据是Redo Log的一部分,因此传输数据量小,占用带宽少,与基于存储复制和主机逻辑卷复制的技术相比,沃信方案主要优势如下:



ü保证备份数据库一直可用



ü保证两端数据库事务的一致性



ü异构支持,不需要两端主机、存储同构,也不需要数据库版本一致



ü支持多种数据复制方式,如数据集中、分发、多层复制等



ü不会降低生产系统可用性,并且可以提供网络失败、数据库失败、主机失败、容灾系统本身失败的容错能力



ü传输数据量小,占用带宽少



与同类技术比,沃信技术主要优势如下:



ü不在生产系统和备份系统安装任何软件,降低对生产系统的影响



ü支持不停机数据迁移



ü强容错能力:抽取组件、分析组件和装载组件均支持重入,类似于断点续传,避免重做已完成的工作



ü对出错表,可跳过,避免影响整体进度,并可针对单表进行数据迁移,迁移完成后继续同步,避免因单表故障导致重新初始化(数据迁移)



ü自身具有数据总线,不依赖通讯队列缓存数据,避免故障时因队列满导致的数据丢失。