神通数据库高可用

一、神通数据库双机热备方案


   (一)概述

    ■ 什么是双机热备

从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。

双机热备针对的是服务器的故障。服务器的故障可能由各种原因引起,如设备故障、操作系统故障、软件系统故障等等。一般地讲,在技术人员在现场的情况下,恢复服务器正常可能需要10分钟、几小时甚至几天。从实际经验上看,除非是简单地重启服务器(可能隐患仍然存在),否则往往需要几个小时以上。而如果技术人员不在现场,则恢复服务的时间就更长了。而对于一些重要系统而言,用户是很难忍受这样长时间的服务中断的。因此,就需要通过双机热备,来避免长时间的服务中断,保证系统长期、可靠的服务。


■ 双机热备的实现

  双机热备有两种实现模式,一种是基于共享的存储设备的方式,另一种是没有共享的存储设备的方式,一般称为纯软件方式。

 基于存储共享的双机热备是双机热备的最标准方案。对于这种方式,采用两台服务器,使用共享的存储设备(磁盘阵列柜或存储区域网SAN)。两台服务器可以采用互备、主从、并行等不同的方式。在工作过程中,两台服务器将以一个虚拟的IP地址对外提供服务,依工作方式的不同,将服务请求发送给其中一台服务器承担。同时,服务器通过心跳线(目前往往采用建立私有网络的方式)侦测另一台服务器的工作状况。当一台服务器出现故障时,另一台服务器根据心跳侦测的情况做出判断,并进行切换,接管服务。对于用户而言,这一过程是全自动的,在很短时间内完成,从而对业务不会造成影响。由于使用共享的存储设备,因此两台服务器使用的实际上是一样的数据,由双机或集群软件对其进行管理。

 对于纯软件的方式,则是通过支持镜像的双机软件,将数据实时复制到另一台服务器上,这样同样的数据就在两台服务器上各存在一份,如果一台服务器出现故障,可以及时切换到另一台服务器。


(二)神通双机热备系统的结构和原理


 神通数据库为保证用户能够不间断的访问数据,提供了两种高可用解决方案。一种解决方案是基于共享磁盘的双机热备份技术来构建神通高可用数据库;一种解决方案是基于日志传输技术的双机热备份技术方式来构建神通高可用数据库。

 采用共享磁盘方式是将用户数据存放在共享磁盘上,后台同时使用两台神通服务器对用户数据进行管理。正常情况下,只有一台神通活动服务器拥有共享磁盘数据的管理权,可对外提供数据访问服务,而另一台处于备用状态;如果活动服务器发生故障,停止对外提供服务,则备用服务器自动接管共享磁盘上的用户数据的管理权,继续对外提供服务,保证用户访问数据的不间断性;当故障服务器修复后,以备用服务器的身份继续工作。系统架构图如下:



 

采用日志传输技术的方案通过在两台神通数据库服务器间进行日志传输来实现数据的高可用性,双机之间的数据在物理上是完全独立的。正常情况下,神通数据库主服务器以活动服务器的身份对外提供数据访问服务,同时神通数据库备份服务器获取主服务器上的更新日志并和主服务器保持数据同步。如果主服务器发生故障,备份服务器自动切换为主服务器并对外提供服务。在故障服务器被修复后,以备用服务器的身份继续进行与主服务器进行日志同步工作。系统架构图如下:




 这两种解决方案都可以在保证用户数据完整性的前提下,完成双机服务器的快速(秒级)自动切换,足以满足用户的高可用要求。


二、神通数据库读写分离解决方案


(一)方案技术原理


       神通读写分离集群为了保障数据库真正的高可用,将节点分为同步组和异步组,同步组中的节点能通过日志同步实时反应数据变化,在Master中的操作,必须在同步组中的Slaver节点都执行成功后才返回;异步组中Slave节点数据不实时的从Master节点同步,会定期的做同步。

      集群启动时,会从同步组中的节点中随机选举一个正常节点作为Master节点;当Master节点故障时,会从同步组中的节点中随机选举一个正常节点作为Master节点;异步组节点因无法做到实时同步,不允许作为Master节点运行。




(二)方案技术特点


高可用性

      神通读写分离集群中同步组中配置了多个节点,且都处于运行状态,Master故障下能实现秒级切换,切换时间都在6秒以下。

读写分离

       神通读写分离集群基于事务级别的读写分离方案,如果事务中只有读操作,通过驱动分发器将事务分发到Slave节点中执行;如果事务中写操作,通过驱动分发器将事务分发到Master节点中执行;如果事务中开始是读,后续有写操作,则将开始的读操作分发到Slave节点中执行,直到写操作后,该事务中的所有SQL将在Master节点中执行;对于无法识别读写类型的,将发送到Master节点中执行;对于将写事务识别为度事务时,先在Slave节点中执行,执行错误,发现有写操作,将自动返回在Master节点中重新执行。

负载均衡

      神通读写分离集群中所有的Slave节点用于读操作,当我们读取操作较多时,驱动分发器将通过分发算法,将读操作均衡分布在所有正确的Slave节点中执行,降低Master节点读写冲突,通过Slave节点负载均衡,提高查询性能。

在线扩展

      当Slave节点出现加大压力导致性能下降时,神通读写分离集群可以在线增加Slave节点,增加的Slave节点会自动被集群所识别,然后进行日志同步,读操作负载均衡。

性能提升

      在读比例比较大的应用系统中,同步部署神通读写分离集群,能大大的提升数据库的响应能力,能提高数据库的整体性能(事务吞吐量);随着读操作的比例越高,性能提升倍数约趋向于节点数。