为了使前台客户应用在后台服务器切换时顺利地实现重新连接甚至不改变连接,可以选择如下方法:
· 修改客户端使用的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。
三、SYBASE灾难备份方案的特点
通过采用Sybase的备份方案可以达到:
· 主点和备份点数据库系统可以位于地理位置相距很远的地方,并且系统的数据同时在主点和复制点都保存有一份,即使一份完全丢失,另一份数据也可以把系统恢复到故障前的工作状态。
· 主点的硬件系统和复制点的硬件系统不必完全一样,复制点的硬件可以比主点的硬件配置低,从而减少硬件投资费用,提高投资回报率。
· 因为Sybase复制系统复制的是数据库日志,因此对主点的数据库正常运行影响很小(5%以下)。
· 通过OpenSwitch可以实现客户端的透明切换,客户端无需重新启动。
· OpenSwitch支持连接缓冲、资源管理等功能,大大提高性能。
OpenSwitch的要求:
· 主点和复制点的数据库系统必须为Sybase数据库(版本最好一致)
· 主点和复制点的数据库名、设备名、逻辑段名必须一致
· 不支持SERVER-SIDE CURSOR
· 不支持动态SQL
· 不支持临时表
· 相对于普通的客户端/服务器结构,性能会受一定的影响。
当然,要构造一个完整的、实用的和可靠的灾备系统,需要从各个层面共同协调,统一构造,如:网络、硬件、电源、操作系统、数据库系统、应用系统和维护软件等。只有各个层面都考虑和配置了灾备方式和灾备的软硬件产品,才能称为一个容灾系统,才能建立一个完善的容灾中心。这样,才能够充分满足点新的业务需求。
阅读(995) | 评论(0) | 转发(0) |