服务器 频道

SYBASE的数据灾难备份方案(下)

  【IT168 服务器学院】3、客户端自动切换系统

  为了使前台客户应用在后台服务器切换时顺利地实现重新连接甚至不改变连接,可以选择如下方法:

  · 修改客户端使用的Interfaces文件。用切换后的数据库服务器的"网络地址/host-name + Port #"修正客户Interfaces文件。

  · 可能时,可以改变客户应用连接的服务器名称。

  · 根据SYBASE客户、服务器的识别机制,可以为同一逻辑名称的服务器指定不同的"网络地址/host-name + Port #"组合项,即映射到不同的物理服务器。

  · 在客户应用程序中加入必要的程序段,控制客户应用的重新连接过程。

  重新映射(Map)客户应用到数据库服务器的逻辑。比如,在客户应用与数据库服务器之间引入一个Open Server程序,一方面,它维持与前台客户应用的所有连接;另一方面,从该程序引出与后台实际数据库服务器的连接以一一对应于前台连接。后台数据库切换时,只通过程序改变它与后台的连接以及前后台连接的一一对应关系,而不改变前台连接。当然,有了这个中间程序后,还可通过程序帮助自动实现上述方案中后台前后的有关工作。此种功能的Open Server程序即为SYBASE公司的OpenSwitch产品。

  客户端自动切换采用Sybase的OpenSwitch产品,它是一个OpenServer应用网关,负责客户端和服务器端的连接管理和控制。它的实现机制如图7,当客户端连接时,连接到OpenSwitch(incoming application connections),然后OpenSwitch再根据用户端的请求和数据库服务器的运行状况建立OpenSwitch的连接(outgoing connections)。

  在系统的实际运行过程中,OpenSwitch把每一个客户端连接(incoming application connections)松散地捆绑到一对服务器端的连接上(outgoing connections)。在图7中即OpenSwitch到SQL SERVER A 和SQL SERVER B的连接。当正常运转时,OpenSwitch把客户端连接与OpenSwitch到SQL SERVER A的连接捆绑在一起,并对客户端的连接信息进行存储,如当前的数据库、事务状态等等。当服务器A发生故障时,OpenSwitch会自动把客户端连接与OpenSwitch到服务器B的连接捆绑到一起,并通过客户端的连接信息透明地实现客户端连接切换。



  图7 OpenSwitchgong 工作原理

  当主点服务器发生故障时,如果客户端正好在进行事务处理,并且事务没有结束,则OpenSwitch给客户端发送一个1205的错误信息,要求重新提交该事务,然后自动进行切换。如果客户端没有进行事务处理,则OpenSwitch进行透明的客户端连接切换。

  系统的自动切换过程

  在Sybase数据库的复制过程中,会存在很短的时间延迟,主要是:

  · 主点的复制代理线程从日志读取日志的时间

  · 日志在网络的传输时间

  · 主点的操作在复制点提交时需要的时间

  当主点数据库发生意外时,有可能在复制服务器中还存在没有提交的日志数据,因此必须先把这些日志数据在备份点提交,然后进行切换,允许客户端进行正常操作。OpenSwitch提供了一组API函数用于开发一个外部协调模块来解决该问题。具体如图8。



  图8 自动切换过程

  具体的切换过程如下:

  1) 主点数据库服务器1发生故障

  2) 外部协调模块接收到主点服务器发生故障的消息,所有客户端连接暂时悬挂起来。

  3) 外部协调模块同复制服务器的复制代理线程进行通信,确认队列中所有的日志已经在备份点2进行了提交。

  4) 外部协调模块通知OpenSwitch可以进行切换。

  5) OpenSwitch切换所有客户端连接到备份点2。
0
相关文章