一种处理数据库状态转移的方法和系统.pdf

上传人:小** 文档编号:4262103 上传时间:2018-09-12 格式:PDF 页数:14 大小:407.73KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110169312.1

申请日:

2011.06.22

公开号:

CN102841895A

公开日:

2012.12.26

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20110622|||公开

IPC分类号:

G06F17/30; H04L29/08

主分类号:

G06F17/30

申请人:

阿里巴巴集团控股有限公司

发明人:

王福强

地址:

英属开曼群岛大开曼岛资本大厦一座四层847号邮箱

优先权:

专利代理机构:

北京集佳知识产权代理有限公司 11227

代理人:

逯长明;王宝筠

PDF下载: PDF下载
内容摘要

本申请公开了一种处理数据库状态转移的方法和系统。本申请的方法包括:对主备数据库服务器的状态转移进行统一检测;如果检测到主备数据库服务器发生状态转移,通知数据库应用层以便所述数据库应用层接收到该通知后执行与主备数据库服务器状态对应的切换操作。本申请还公开了一种处理数据库状态转移的系统,该系统包括:主备状态检测单元和主备状态转移通知单元。通过本申请,在一定程度上避免了各应用层离散地进行各自的检测和切换操作所导致的数据库及其周边系统状态不一致,提供数据库高可用性的同时,保证了数据库系统状态的一致性。

权利要求书

1.一种处理数据库状态转移的方法,其特征在于,包括步骤:
对主备数据库服务器的状态转移进行统一检测;
如果检测到主备数据库服务器发生状态转移,通知数据库应用层以便所述
数据库应用层接收到该通知后执行与主备数据库服务器状态对应的切换操作。
2.根据权利要求1所述的处理数据库状态转移的方法,其特征在于,所
述对主备数据库服务器的状态转移进行统一检测包括:根据预置的时间间隔探
测主备数据库服务器的状态转移。
3.根据权利要求1或2所述的处理数据库状态转移的方法,其特征在于,
所述对主备数据库服务器的状态转移进行统一检测,具体包括:根据数据库策
略,向数据库服务器发送操作请求,根据各数据库服务器对所述操作请求的不
同处理结果来判定发生主备数据库服务器的状态转移,并确定转移后的主数据
库服务器。
4.根据权利要求3所述的处理数据库状态转移的方法,其特征在于,所
述向数据库服务器发送操作请求,根据各数据库服务器对所述操作请求的不同
处理结果来判定发生主备数据库服务器的状态转移,并确定转移后的主数据库
服务器包括:
向上一检测时刻获知的主数据库服务器发送操作请求;
如果未能接收到所述上一检测时刻获知的主数据库服务器针对所述操作
请求的正确的处理结果,则判定发生主备数据库服务器的状态转移,并向其他
数据库服务器发送操作请求,根据各数据库服务器对所述操作请求的不同处理
结果,确定当前的主数据库服务器。
5.根据权利要求3所述的处理数据库状态转移的方法,其特征在于,所
述向数据库服务器发送操作请求,根据各数据库服务器对所述操作请求的不同
处理结果来判定发生主备数据库服务器的状态转移,并确定转移后的主数据库
服务器包括:
向系统中所有的数据库服务器发送操作请求;
根据各数据库服务器对所述操作请求的不同处理结果,确定当前的主数据
库服务器;
如果当前的主数据库服务器与上一检测时刻获知的主数据库服务器不同,
判定发生主备数据库服务器的状态转移。
6.根据权利要求1或2所述的处理数据库状态转移的方法,其特征在于,
所述对主备数据库服务器的状态转移进行统一检测,具体包括:
通过读取包含有当前主数据库服务器标识信息的配置文件的方式,获知当
前的主数据库服务器,如果当前的主数据库服务器与上一检测时刻获知的主数
据库服务器不同,判定发生主备数据库服务器的状态转移。
7.根据权利要求1所述的处理数据库状态转移的方法,其特征在于,所
述如果检测到主备数据库服务器发生状态转移,通知数据库应用层,具体包括:
使用推模式,将携带有已发生主备数据库服务器状态转移和当前的主数据库服
务器标识信息的通知推送到数据库应用层。
8.根据权利要求1所述的处理数据库状态转移的方法,其特征在于,所
述对主备数据库服务器的状态转移进行统一检测包括:
对计划中的主备数据库服务器转移操作进行统一检测;或
对非计划系统故障导致的主备数据库服务器转移进行统一检测。
9.根据权利要求1所述的处理数据库状态转移的方法,其特征在于,还
包括:
接收数据库应用层在启动时或者启动后的特定时间内的注册请求,并在注
册信息中保存应用层所在的连接建立相关信息;
所述通知数据库应用层,具体包括:
读取注册信息获得数据库应用层的连接建立相关信息,通过连接建立相关
信息通知数据库应用层。
10.根据权利要求1、2、7-9任一项所述的处理数据库状态转移的方法,
其特征在于,所述主备数据库服务器包括分布式数据库系统的数据库集群中的
主备数据库服务器。
11.一种处理数据库状态转移的系统,其特征在于,包括:
主备状态转移检测单元,用于对主备数据库服务器的状态转移进行统一检
测;
主备状态转移通知单元,用于当检测到主备数据库服务器发生状态转移
后,通知数据库的应用层,以便所述数据库应用层接收到该通知后执行与主备
数据库服务器状态对应的切换操作。
12.根据权利要求11所述的处理数据库状态转移的系统,其特征在于,
所述主备状态转移检测单元,具体用于根据预置的时间间隔探测主备数据库服
务器的状态转移。
13.根据权利要求11或12所述的处理数据库状态转移的系统,其特征在
于,所述主备状态转移检测单元,进一步包括:
操作请求发送子单元,用于根据数据库策略,向数据库服务器发送操作请
求;
主备状态转移判断子单元,用于根据各数据库服务器对所述操作请求的不
同处理结果来判定发生主备数据库服务器的状态转移,并确定转移后的主数据
库服务器。
14.根据权利要求13所述的处理数据库状态转移的系统,其特征在于,
所述操作请求发送子单元,具体用于向上一检测时刻获知的主数据库服务
器发送操作请求;
所述主备状态转移判断子单元,具体用于如果未能接收到所述上一检测时
刻获知的主数据库服务器针对所述操作请求的正确的处理结果,则判定发生主
备数据库服务器的状态转移;并触发所述操作请求发送子单元向其它数据库服
务器发送操作请求,以便根据当前的主数据库服务器返回的正确的执行结果,
确定当前的主数据库服务器。
15.根据权利要求13所述的处理数据库状态转移的系统,其特征在于,
所述操作请求发送子单元,具体用于向系统中所有的数据库服务器发送操
作请求;
所述主备状态转移判断子单元,具体用于根据各数据库服务器对所述操作
请求的不同处理结果,确定当前的主数据库服务器;如果当前的主数据库服务
器与上一检测时刻获知的主数据库服务器不同,判定发生主备数据库服务器的
状态转移。
16.根据权利要求11或12所述的处理数据库状态转移的系统,其特征在
于,所述主备状态转移检测单元,进一步包括:
配置文件读取子单元,用于通过读取包含有当前主数据库服务器标识信息
的配置文件的方式,获知当前的主数据库服务器,如果当前的主数据库服务器
与上一检测时刻获知的主数据库服务器不同,判定发生主备数据库服务器的状
态转移。
17.根据权利要求11所述的处理数据库状态转移的系统,其特征在于,
所述主备状态转移通知单元,具体用于使用推模式,将携带有已发生主备数据
库服务器状态转移和当前的主数据库服务器标识信息的通知推送到数据库应
用层。
18.根据权利要求11所述的处理数据库状态转移的系统,其特征在于,
所述主备状态转移检测单元,具体用于对计划中的主备数据库服务器转移操作
进行统一检测;或
对非计划系统故障导致的主备数据库服务器转移进行统一检测。
19.根据权利要求11所述的处理数据库状态转移的系统,其特征在于,
进一步包括:应用层注册单元,用于接收数据库应用层在启动时或者启动后的
特定时间内的注册请求,并在注册信息中保存应用层所在的连接建立相关信
息;
所述主备状态转移通知单元,具体用于当主备状态转移通知单元检测到主
备数据库服务器发生状态转移后,读取注册信息获得数据库应用层的连接建立
相关信息,通过连接建立相关信息通知数据库应用层,以便所述数据库应用层
接收到该通知后执行与主备数据库服务器状态对应的切换操作。
20.根据权利要求11、12、17-19任一项所述的处理数据库状态转移的系
统,其特征在于,所述主备数据库服务器包括分布式数据库系统的数据库集群
中的主备数据库服务器。

说明书

一种处理数据库状态转移的方法和系统

技术领域

本申请涉及数据库领域,特别涉及一种处理数据库状态转移的方法和系
统。

背景技术

随着数据库技术和计算机网络技术的不断进步,越来越多企业的信
息系统使用数据库作为存储和管理数据的工具。企业依赖于数据库系统
运行其关键业务应用,几小时甚至是几分钟的数据库服务中断都是不允
许的,因此在这些应用中保证数据库的高可用性至关重要。高可用性(HA,
High Availability)是指,通过尽量缩短因计划中的日常维护操作或计
划外的突发系统故障所导致的服务中断时间,向用户提供持续不间断的
服务。

数据库系统使用计算机网络将地理位置分散而逻辑上集中的数据连
接起来,可以通过在不同物理位置提供冗余数据的方式提供数据库系统
的高可用性。虽然在不同物理位置提供冗余数据,但通常只由一台数据
库服务器即主数据库服务器对外提供服务,一台或多台数据库服务器作
为备份服务器,当主数据库服务器计划停机或出现故障不能提供数据服
务时,一台备份服务器接管主数据库服务器的工作,使数据库用户能持
续使用数据,实现了数据库系统的高可用性。

上述主备数据库服务器转移是由数据库系统本身提供的机制来完成
的,这种机制仅限于数据库系统内部。用户通常感觉不到主备数据库服
务器状态的变化是因为在用户和数据库之间针对不同的用户需求存在不
同的应用层,这些应用层在主备数据库服务器发生状态转移后采取了与
主备数据库服务器状态对应的切换操作,使得从用户的角度感觉不到计
划内操作引起的或计划外故障发生导致的主备数据库服务器状态转移。

然而,通常不同的应用层使用自己的检测逻辑检测数据库的主备数
据库服务器状态转移,当检测到发生主备数据库服务器状态转移后,各
应用层根据检测的结果执行相应的切换操作。由于检测的时间和检测的
间隔各不相同,这就可能导致在主备数据库服务器发生状态转移后的一
段时间内,各应用层以不同的数据库服务器为当前的主数据库服务器。
进一步,当进行数据库写操作时,将导致数据不一致。可见,简单地采
用冗余方式提供数据库高可用性的同时,可能带来数据库状态不一致的
问题。

发明内容

有鉴于此,本申请提供一种处理数据库状态转移的方法和系统,针对数据
库应用层提供统一的状态转移方案,从而在一定程度上避免当数据库系统主备
数据库服务器发生状态转移时各应用层离散的切换操作所导致的数据库及其
周边系统的状态不一致。

本申请提供了一种处理数据库状态转移的方法,包括步骤:

对主备数据库服务器的状态转移进行统一检测;

如果检测到主备数据库服务器发生状态转移,通知数据库应用层以便所述
数据库应用层接收到该通知后执行与主备数据库服务器状态对应的切换操作。

优选地,所述对主备数据库服务器的状态转移进行统一检测包括:根据预
置的时间间隔探测主备数据库服务器的状态转移。

优选地,所述对主备数据库服务器的状态转移进行统一检测,具体包括:
根据数据库策略,向数据库服务器发送操作请求,根据各数据库服务器对所述
操作请求的不同处理结果来判定发生主备数据库服务器的状态转移,并确定转
移后的主数据库服务器。

优选地,所述向数据库服务器发送操作请求,根据各数据库服务器对所述
操作请求的不同处理结果来判定发生主备数据库服务器的状态转移,并确定转
移后的主数据库服务器包括:

向上一检测时刻获知的主数据库服务器发送操作请求;

如果未能接收到所述上一检测时刻获知的主数据库服务器针对所述操作
请求的正确的处理结果,则判定发生主备数据库服务器的状态转移,并向其他
数据库服务器发送操作请求,根据各数据库服务器对所述操作请求的不同处理
结果,确定当前的主数据库服务器。

优选地,所述向数据库服务器发送操作请求,根据各数据库服务器对所述
操作请求的不同处理结果来判定发生主备数据库服务器的状态转移,并确定转
移后的主数据库服务器包括:

向系统中所有的数据库服务器发送操作请求;

根据各数据库服务器对所述操作请求的不同处理结果,确定当前的主数据
库服务器;

如果当前的主数据库服务器与上一检测时刻获知的主数据库服务器不同,
判定发生主备数据库服务器的状态转移。

优选地,所述对主备数据库服务器的状态转移进行统一检测,具体包括:

通过读取包含有当前主数据库服务器标识信息的配置文件的方式,获知当
前的主数据库服务器,如果当前的主数据库服务器与上一检测时刻获知的主数
据库服务器不同,判定发生主备数据库服务器的状态转移。

优选地,所述如果检测到主备数据库服务器发生状态转移,通知数据库应
用层,具体包括:使用推模式,将携带有已发生主备数据库服务器状态转移和
当前的主数据库服务器标识信息的通知推送到数据库应用层。

优选地,所述对主备数据库服务器的状态转移进行统一检测包括:

对计划中的主备数据库服务器转移操作进行统一检测;或

对非计划系统故障导致的主备数据库服务器转移进行统一检测。

优选地,还包括:

接收数据库应用层在启动时或者启动后的特定时间内的注册请求,并在注
册信息中保存应用层所在的连接建立相关信息;

所述通知数据库应用层,具体包括:

读取注册信息获得数据库应用层的连接建立相关信息,通过连接建立相关
信息通知数据库应用层。

优选地,所述主备数据库服务器包括分布式数据库系统的数据库集群中的
主备数据库服务器。

本申请提供一种处理数据库状态转移的系统,包括:

主备状态转移检测单元,用于对主备数据库服务器的状态转移进行统一检
测;

主备状态转移通知单元,用于当检测到主备数据库服务器发生状态转移
后,通知数据库的应用层,以便所述数据库应用层接收到该通知后执行与主备
数据库服务器状态对应的切换操作。

优选地,所述主备状态转移检测单元,具体用于根据预置的时间间隔探测
主备数据库服务器的状态转移。

优选地,所述主备状态转移检测单元,进一步包括:

操作请求发送子单元,用于根据数据库策略,向数据库服务器发送操作请
求;

主备状态转移判断子单元,用于根据各数据库服务器对所述操作请求的不
同处理结果来判定发生主备数据库服务器的状态转移,并确定转移后的主数据
库服务器。

优选地,所述操作请求发送子单元,具体用于向上一检测时刻获知的主数
据库服务器发送操作请求;

所述主备状态转移判断子单元,具体用于如果未能接收到所述上一检测时
刻获知的主数据库服务器针对所述操作请求的正确的处理结果,则判定发生主
备数据库服务器的状态转移;并触发所述操作请求发送子单元向其它数据库服
务器发送操作请求,以便根据当前的主数据库服务器返回的正确的执行结果,
确定当前的主数据库服务器。

优选地,所述操作请求发送子单元,具体用于向系统中所有的数据库服务
器发送操作请求;

所述主备状态转移判断子单元,具体用于根据各数据库服务器对所述操作
请求的不同处理结果,确定当前的主数据库服务器;如果当前的主数据库服务
器与上一检测时刻获知的主数据库服务器不同,判定发生主备数据库服务器的
状态转移。

优选地,所述主备状态转移检测单元,进一步包括:

配置文件读取子单元,用于通过读取包含有当前主数据库服务器标识信息
的配置文件的方式,获知当前的主数据库服务器,如果当前的主数据库服务器
与上一检测时刻获知的主数据库服务器不同,判定发生主备数据库服务器的状
态转移。

优选地,所述主备状态转移通知单元,具体用于使用推模式,将携带有已
发生主备数据库服务器状态转移和当前的主数据库服务器标识信息的通知推
送到数据库应用层。

优选地,所述主备状态转移检测单元,具体用于对计划中的主备数据库服
务器转移操作进行统一检测;或

对非计划系统故障导致的主备数据库服务器转移进行统一检测。

优选地,进一步包括:应用层注册单元,用于接收数据库应用层在启动时
或者启动后的特定时间内的注册请求,并在注册信息中保存应用层所在的连接
建立相关信息;

所述主备状态转移通知单元,具体用于当主备状态转移通知单元检测到主
备数据库服务器发生状态转移后,读取注册信息获得数据库应用层的连接建立
相关信息,通过连接建立相关信息通知数据库应用层,以便所述数据库应用层
接收到该通知后执行与主备数据库服务器状态对应的切换操作。

优选地,所述主备数据库服务器包括分布式数据库系统的数据库集群中的
主备数据库服务器。

根据本申请提供的具体实施例,本申请公开了以下技术效果:

本申请实施例中,引入了对主备数据库服务器状态转换的统一处理,即对
主备数据库服务器的状态转移进行统一检测,当发现发生状态转移时,通知数
据库的各应用层,从而保证了各应用层能够在同一时间获得统一的关于主备数
据库服务器状态转换的通知,并根据该通知消息执行各应用层相应的切换方
案。采用统一检测和通知的方法在一定程度上避免了各应用层离散地进行各自
的检测和转换操作所导致的数据库状态不一致,提供数据库高可用性的同时,
保证了数据库状态的一致性。另外,虽然各个应用层对状态转移的具体切换操
作是不同的,但对于检测主备数据库服务器状态转移的过程却是相同的,针对
数据库应用层采用统一的检测和通知逻辑,有助于通用性的实现,降低了数据
库与其应用层之间的复杂性。

当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优
点。

附图说明

图1为本申请的方法流程图;

图2为本申请第一实施例系统结构示意图;

图3为本申请的系统结构图。

具体实施方式

为了使本申请的上述目的、特征、和优点能够更加明显易懂,下面结合附
图和具体实施方式对本申请作进一步详细的说明。

参考图1所示,该图为本申请的方法流程图,包括以下步骤:

S101:对主备数据库服务器的状态转移进行统一检测;

S102:如果检测到主备数据库服务器发生状态转移,通知数据库应用层以
便所述数据库应用层接收到该通知后执行与主备数据库服务器状态对应的切
换操作。

在本申请实施中,通过统一的对主备数据库服务器的状态转移检测和通
知,使得数据库不同的应用层能够在同一时间范围内得到统一的关于主备数据
库服务器的状态转移信息,进而启动各自相应的切换操作,从而保证各应用层
连接的数据库服务器是当前主数据库服务器,在一定程度上避免了现有技术中
可能出现的不同应用层连接到不同数据库服务器,进而导致对不同数据源的数
据进行更新等操作而引起的数据库及其周边系统的状态不一致。

参考图2所示,该图为本申请实施例所述的数据库的状态转移系统组成示
意图。该系统中,数据库系统当前有主备数据库服务器,并且由主数据库服务
器对外提供数据库服务,使用该数据库的应用层有n个,各应用层在数据库发
生主备数据库服务器状态转移时需要执行不同的与主备数据库服务器状态对
应的切换操作。

在实际应用中,数据库系统可能发生主备数据库服务器状态转移的原因可
能是有计划的对数据库服务器进行维护操作,例如定时轮流对当前主数据库服
务器进行重启,或发现当主数据库服务器存在潜在的硬件或软件故障,虽然该
故障还没有发生但可以有计划地提前关闭该数据库服务器进行故障排除。另
外,也可能是主数据库服务器在运行中出现了突发的硬件或软件故障,即非计
划中的数据服务中断。无论上述那种原因,都将会导致主备数据库服务器之间
的状态转移,即原备份数据库服务器将接替原主数据库服务器成为当前主数据
库服务器,并继续对外提供数据服务器。本申请实施例就是要对上述各种情况
下的主备数据库服务器的状态转移事件进行统一处理,以便数据库应用层及时
执行与主备数据库服务器状态对应的切换操作。

S101)对主备数据库服务器转移的状态进行统一检测。

为避免各应用层对数据库离散地进行各自的检测和转换操作所导致的数
据不一致,本申请实施例引入了对主备数据库服务器状态转移的统一检测。

统一检测是否发生主备数据库服务器转换可以采取定时检测的方法,即
根据预置的时间间隔探测是否发生主备数据库服务器状态转换。具体在探测是
否发生主备数据库服务器状态转移时,可以通过多种方式实现。在其中一种实
施方式下,由于数据库系统策略规定主备数据库服务器提供的数据服务不同,
即利用主备数据库服务器对同一操作请求的不同处理结果来获得某一检测时
刻的主数据库服务器,通过比较上一检测时间获得的主数据库服务器得到主备
数据库状态转移的检测结果。

当检测到主数据库服务器发送状态转移时,对于如何获知哪一台数据库服
务器为当前的主数据库服务器,有不同的实现方法。通常在数据库服务器进行
主备状态转移时,数据库系统根据特定的选举算法从备份数据库服务器中选举
当前的主数据库服务器。因此,一种实现方法是当检测到主数据库服务器发送
状态转移时,使用该数据库系统特定的选举算法计算出当前的主数据库服务
器。这种实现方法的前提是已知数据库系统的特定选举算法,并且当该选举算
法发生改变时,也要进行对应的调整以计算出当前的主数据库服务器。另一种
实现方法是在未知该特定算法的情况下,使用与检测主数据库服务器状态转移
类似的方法获知当前主数据库服务器。第二种方法独立于数据库系统的选举算
法,不需要已知数据库系统的特定选举算法,并且当数据库系统的选举算法发
生改变时,不需要进行对应的调整依然能检测出当前的主数据库服务器。

根据上述第二种方法,具体可以采用以下实现方式:

向系统中所有的数据库服务器发送操作请求;由于不同的数据库服务器对
所述操作请求的不同处理结果,只有主数据库服务器返回正确的执行结果,由
此可以确定当前的主数据库服务器;如果当前的主数据库服务器与上一检测时
刻获知的主数据库服务器不同,判定发生主备数据库服务器的状态转移。

另一种实现方法是:向上一检测时刻获知的主数据库服务器发送操作请
求;如果未能接收到所述上一检测时刻获知的主数据库服务器针对所述操作请
求的正确的处理结果,则该数据库当前已经不再能提供主数据库服务,因此判
定已发生主备数据库服务器的状态转移;向其它数据库服务器发送操作请求,
由于只有当前的主数据库服务器能够执行该数据操作,因此通过主数据库服务
器返回的正确的处理结果确定当前的主数据库服务器。

第二种方法避免了第一种方法中每次检查都向系统中所有的数据库服务
器发送操作请求,而是向上一检测时刻获知的主数据库服务器发送操作请求。
虽然在第二种方法中当未能接收到上一检测时刻获知的主数据库服务器针的
正确的处理结果时,也向其它数据库服务器发送操作请求,但由于发生主备状
态转移的频率相对于检查频率来说是小很多的。因此,第二种方法一定程度上
节省了系统资源和网络带宽。

在本实施例中,数据库系统的策略规定只有主数据库提供数据的更新或写
入操作服务,备份数据库仅提供只读操作服务,因此可以使用以下步骤探测是
否发生主备数据库服务器状态转换:

初始状态下,在某一检测时刻,向所有主备数据库服务器各发送一条数据
库的更新操作请求,主数据库服务器返回正确的处理结果,得到当前主数据库
服务器的标识信息。该标识信息可以是位置信息如IP地址,也可以是该数据
库服务器的身份信息如主机名。

等待设定的时间间隔后,向上一检测时刻获知的主数据库服务器发送一条
数据库的更新操作请求,若该主数据库服务器仍然返回正确的处理结果,则判
定未发生主备数据库状态转移;若该主数据库服务器返回处理结果异常,则判
定已发生主备数据库服务器状态转移,并则向系统中的备份数据库服务器发送
数据库更新操作请求,由于该备份数据库服务器已经成为当前的主数据库服务
器向外提供数据服务,因此接收到该数据库服务器返回的正确的处理结果,即
确定当前的主数据库服务器。检测结果包含主备数据库服务器发生状态转移和
当前的主数据库服务器的标识信息。

上述检测方法中发送“更新操作请求”,对不同的数据库策略存在不同的
替代方案,例如,若数据库的策略为主数据库服务器提供所有的数据服务包括
读、写入和更新数据服务,而备份数据库服务器不提供任何数据服务,针对这
样的数据库,可发送读数据操作请求进行检测,因为只有主数据库服务器才会
返回正确的执行结果,而备份数据库服务器不会返回正确的执行结果,由此也
可以获知主备数据库服务器的工作状态。

除了采用上述方式进行检测以外,还可以采用其他的方式来实现。例如,
由于数据库系统具有配置文件,该配置文件会随着数据库服务器的主备数据库
服务器的状态转移实时更新,也即,配置文件中记录了当前哪个数据库服务器
为主状态,并且记录有该数据库服务器的标识信息。因此,在需要检测主数据
库服务器状态时,可以首先通过读取该配置文件的方式,获知当前的主数据库
服务器,并与上一检测时刻的读取结果进行比较,以获知是否发生状态转移。

S102如果检测到主备数据库服务器发生状态转移,通知数据库应用层以
便所述数据库应用层接收到该通知后执行与主备数据库服务器状态对应的切
换操作。

一旦检测到主备数据库服务器发生状态转移,可以立即将数据库发生状态
转移的消息通知给使用数据库的各应用层,使得数据库的应用层能够尽可能在
同一时间获得关于数据库状态的通知消息。该通知消息里包含数据库发生了主
备数据库服务器转移,并且包含了当前主数据库服务器的标识信息。由于数据
库系统中主备数据库服务器和各个应用层可能分布在不同的物理位置,它们之
间通过网络连接,所以存在时延,但是由于传播时延在数量级上远小于探测时
间间隔,因此可以忽略这种正常网络时延带来的影响。

为更加迅速地通知数据库应用层,可采用预先注册的方法,即数据库应用
层在启动时或者启动后的特定时间内进行注册,注册的信息包括应用层所在的
连接建立相关信息,这些信息可以是应用层名称以及位置信息如应用层所在主
机IP地址。以便当检测到主备数据库服务器发生状态转移后,根据注册表内
所包括的注册信息将所述通知发送给已注册的应用层。

通知应用层可以采用推模式,例如采用Zookeeper的Watch机制来实现,
即当检测到主备数据库服务器状态转移的事件后,将包含已发生了主备数据库
服务器转移和当前主数据库服务器标识信息的通知消息推送给各个应用层。当
然,在实际应用中,除了这种推模式以外,也可以采用其他方式来实现,这里
不再一一列举。

数据库的应用层接收到主备数据库服务器转移的通知后执行与现有技术
类似的相应的状态切换操作。例如,根据数据库的主备数据库服务器状态调整
数据源对象,具体包括:断开与原主数据库服务器的连接,并与转移后的主数
据库服务器建立连接,从而通过新建立的连接,实现使用转移后的主数据库服
务器提供的数据服务。

由于数据库各应用层需要执行的与主备数据库服务器状态对应的切换操
作各有所不同,因此,将执行各自切换操作的功能依然保留在每个应用层内部
实现,使得各个应用层能够利用统一的通知消息完成各自的切换操作,保证了
操作的正确性。

根据具体应用需要,在主备数据库服务器发生状态转移之后,为获得下一
轮数据库状态的检测消息,可能需要调整检测操作,如转变探测的目标节点,
由检测原主数据库服务器变更为检测当前的主数据库服务器,以便在等待设定
的时间间隔后向当前主数据库服务器发送用于检测的数据库操作。所述调整操
作的执行可以在检测到数据库主备数据库服务器发生转移后立即执行,也可以
在向应用层发出通知后立即执行。

本申请所述的处理数据库状态转移方法可应用于分布式数据库。在分布式
数据库中部署有数据库集群,该数据库集群拥有一个主数据库服务器对外提供
数据服务以及至少一个备份数据库服务器。当主备数据库服务器发生状态转移
时,可通过本申请所诉的处理数据库状态转移方法实现数据库应用层与主备数
据库服务器状态对应的切换操作。

参考图3所示,该图为本申请第一实施例所述处理数据库状态转移的方法
对应的系统结构图,该系统包括主备状态转移检测单元301和主备状态转移通
知单元302。

主备状态转移检测单元用于对主备数据库服务器的状态转移进行统一检
测。主备数据库服务器的状态转移可能是对计划中的主备数据库服务器转移操
作进行统一检测或对非计划系统故障导致的主备数据库服务器转移进行统一
检测。

为尽可能避免各应用层单独对主备数据库服务器的状态转移检测,从而导
致在不同的时间获得状态转移的检测结果,该检测操作由本申请实施例所引入
的主备状态检测单元统一完成。具体检测是否发生主备数据库服务器转换可以
采取不同的方式,主备状态转移检测单元可用于根据预置的时间间隔探测主备
数据库服务器的状态转移。

主备状态转移检测单元,进一步可包括操作请求发送子单元和主备状态转
移判断子单元。操作请求发送子单元,用于根据数据库策略,向数据库服务器
发送操作请求。主备状态转移判断子单元,用于根据各数据库服务器对所述操
作请求的不同处理结果来判定发生主备数据库服务器的状态转移,并确定转移
后的主数据库服务器。

在具体实现时,一种方法是:操作请求发送子单元,向上一检测时刻获知
的主数据库服务器发送操作请求;主备状态转移判断子单元如果未能接收到所
述上一检测时刻获知的主数据库服务器针对所述操作请求的正确的处理结果,
则判定发生主备数据库服务器的状态转移;并触发所述操作请求发送子单元向
其它数据库服务器发送操作请求,以便根据当前的主数据库服务器返回的正确
的执行结果,确定当前的主数据库服务器。

另一种方法是:操作请求发送子单元,具体向系统中所有的数据库服务器
发送操作请求;主备状态转移判断子单元根据各数据库服务器对所述操作请求
的不同处理结果,确定当前的主数据库服务器;如果当前的主数据库服务器与
上一检测时刻获知的主数据库服务器不同,判定发生主备数据库服务器的状态
转移。

在数据库系统具有记录了当前主数据库服务器及其标识信息的配置文件
时,主备状态转移检测单元,进一步包括配置文件读取单元,用于通过读取包
含有当前主数据库服务器标识信息的配置文件的方式,获知当前的主数据库服
务器,主备状态转移检测单元根据当前的主数据库服务器与上一检测时刻获知
的主数据库服务器不同,判定发生主备数据库服务器的状态转移。

当检测到发生主备数据库服务器状态转移后,为更加迅速地通知数据库应
用层,可进一步增加应用层注册单元,用于接收数据库应用层在启动时或者启
动后的特定时间内的注册请求,并在注册信息中保存应用层所在的连接建立相
关信息。当主备状态转移通知单元检测到发生主备数据库服务器转移,读取注
册信息获得数据库应用层的连接建立相关信息,通过连接建立相关信息通知数
据库应用层,以便所述数据库应用层接收到该通知后执行与主备数据库服务器
状态对应的切换操作。

在检测到发生了主备数据库服务器状态转移后,主备状态转移通知单元将
数据库发生状态转移的消息统一通知给使用数据库的各个应用层,使得数据库
的应用层能够尽可能在同一时间获得关于数据库状态的通知消息。该通知消息
里包含数据库已发生主备数据库服务器状态转移,并且包含了当前主数据库服
务器的标识信息,因此数据库应用层能够执行与主备数据库服务器状态对应的
切换操作。主备状态转移通知单元,可以使用推模式,将携带有已发生主备数
据库服务器状态转移和当前的主数据库服务器标识信息的通知推送到数据库
应用层。

在具体实现时,可以将上述各单元作为一种单独的检测通知服务或应用程
序,运行在独立的服务器上,同时,可以在各应用层分别部署监听模块。检测
通知服务或应用程序通过网络与数据库、应用层监听模块连接,并在检测到主
备数据库服务器状态转移消息时,统一通知给应用层监听模块以便应用层启动
与主备数据库服务器状态对应的切换操作。

本实施例所描述的处理数据库状态转移的系统,可用于分布式数据库系统
中,主备数据库服务器包括分布式数据库系统的数据库集群中的主备数据库服
务器。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申
请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申
请的保护范围之内。

一种处理数据库状态转移的方法和系统.pdf_第1页
第1页 / 共14页
一种处理数据库状态转移的方法和系统.pdf_第2页
第2页 / 共14页
一种处理数据库状态转移的方法和系统.pdf_第3页
第3页 / 共14页
点击查看更多>>
资源描述

《一种处理数据库状态转移的方法和系统.pdf》由会员分享,可在线阅读,更多相关《一种处理数据库状态转移的方法和系统.pdf(14页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102841895 A (43)申请公布日 2012.12.26 C N 1 0 2 8 4 1 8 9 5 A *CN102841895A* (21)申请号 201110169312.1 (22)申请日 2011.06.22 G06F 17/30(2006.01) H04L 29/08(2006.01) (71)申请人阿里巴巴集团控股有限公司 地址英属开曼群岛大开曼岛资本大厦一座 四层847号邮箱 (72)发明人王福强 (74)专利代理机构北京集佳知识产权代理有限 公司 11227 代理人逯长明 王宝筠 (54) 发明名称 一种处理数据库状态转移的方法和系统 (57。

2、) 摘要 本申请公开了一种处理数据库状态转移的方 法和系统。本申请的方法包括:对主备数据库服 务器的状态转移进行统一检测;如果检测到主备 数据库服务器发生状态转移,通知数据库应用层 以便所述数据库应用层接收到该通知后执行与主 备数据库服务器状态对应的切换操作。本申请还 公开了一种处理数据库状态转移的系统,该系统 包括:主备状态检测单元和主备状态转移通知单 元。通过本申请,在一定程度上避免了各应用层离 散地进行各自的检测和切换操作所导致的数据库 及其周边系统状态不一致,提供数据库高可用性 的同时,保证了数据库系统状态的一致性。 (51)Int.Cl. 权利要求书3页 说明书8页 附图2页 (19。

3、)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 3 页 说明书 8 页 附图 2 页 1/3页 2 1.一种处理数据库状态转移的方法,其特征在于,包括步骤: 对主备数据库服务器的状态转移进行统一检测; 如果检测到主备数据库服务器发生状态转移,通知数据库应用层以便所述数据库应用 层接收到该通知后执行与主备数据库服务器状态对应的切换操作。 2.根据权利要求1所述的处理数据库状态转移的方法,其特征在于,所述对主备数据 库服务器的状态转移进行统一检测包括:根据预置的时间间隔探测主备数据库服务器的状 态转移。 3.根据权利要求1或2所述的处理数据库状态转移的方法,其特征在于,所述对主备。

4、数 据库服务器的状态转移进行统一检测,具体包括:根据数据库策略,向数据库服务器发送操 作请求,根据各数据库服务器对所述操作请求的不同处理结果来判定发生主备数据库服务 器的状态转移,并确定转移后的主数据库服务器。 4.根据权利要求3所述的处理数据库状态转移的方法,其特征在于,所述向数据库服 务器发送操作请求,根据各数据库服务器对所述操作请求的不同处理结果来判定发生主备 数据库服务器的状态转移,并确定转移后的主数据库服务器包括: 向上一检测时刻获知的主数据库服务器发送操作请求; 如果未能接收到所述上一检测时刻获知的主数据库服务器针对所述操作请求的正确 的处理结果,则判定发生主备数据库服务器的状态转。

5、移,并向其他数据库服务器发送操作 请求,根据各数据库服务器对所述操作请求的不同处理结果,确定当前的主数据库服务器。 5.根据权利要求3所述的处理数据库状态转移的方法,其特征在于,所述向数据库服 务器发送操作请求,根据各数据库服务器对所述操作请求的不同处理结果来判定发生主备 数据库服务器的状态转移,并确定转移后的主数据库服务器包括: 向系统中所有的数据库服务器发送操作请求; 根据各数据库服务器对所述操作请求的不同处理结果,确定当前的主数据库服务器; 如果当前的主数据库服务器与上一检测时刻获知的主数据库服务器不同,判定发生主 备数据库服务器的状态转移。 6.根据权利要求1或2所述的处理数据库状态转。

6、移的方法,其特征在于,所述对主备数 据库服务器的状态转移进行统一检测,具体包括: 通过读取包含有当前主数据库服务器标识信息的配置文件的方式,获知当前的主数据 库服务器,如果当前的主数据库服务器与上一检测时刻获知的主数据库服务器不同,判定 发生主备数据库服务器的状态转移。 7.根据权利要求1所述的处理数据库状态转移的方法,其特征在于,所述如果检测到 主备数据库服务器发生状态转移,通知数据库应用层,具体包括:使用推模式,将携带有已 发生主备数据库服务器状态转移和当前的主数据库服务器标识信息的通知推送到数据库 应用层。 8.根据权利要求1所述的处理数据库状态转移的方法,其特征在于,所述对主备数据 库。

7、服务器的状态转移进行统一检测包括: 对计划中的主备数据库服务器转移操作进行统一检测;或 对非计划系统故障导致的主备数据库服务器转移进行统一检测。 9.根据权利要求1所述的处理数据库状态转移的方法,其特征在于,还包括: 权 利 要 求 书CN 102841895 A 2/3页 3 接收数据库应用层在启动时或者启动后的特定时间内的注册请求,并在注册信息中保 存应用层所在的连接建立相关信息; 所述通知数据库应用层,具体包括: 读取注册信息获得数据库应用层的连接建立相关信息,通过连接建立相关信息通知数 据库应用层。 10.根据权利要求1、2、7-9任一项所述的处理数据库状态转移的方法,其特征在于,所 。

8、述主备数据库服务器包括分布式数据库系统的数据库集群中的主备数据库服务器。 11.一种处理数据库状态转移的系统,其特征在于,包括: 主备状态转移检测单元,用于对主备数据库服务器的状态转移进行统一检测; 主备状态转移通知单元,用于当检测到主备数据库服务器发生状态转移后,通知数据 库的应用层,以便所述数据库应用层接收到该通知后执行与主备数据库服务器状态对应的 切换操作。 12.根据权利要求11所述的处理数据库状态转移的系统,其特征在于,所述主备状态 转移检测单元,具体用于根据预置的时间间隔探测主备数据库服务器的状态转移。 13.根据权利要求11或12所述的处理数据库状态转移的系统,其特征在于,所述主。

9、备 状态转移检测单元,进一步包括: 操作请求发送子单元,用于根据数据库策略,向数据库服务器发送操作请求; 主备状态转移判断子单元,用于根据各数据库服务器对所述操作请求的不同处理结果 来判定发生主备数据库服务器的状态转移,并确定转移后的主数据库服务器。 14.根据权利要求13所述的处理数据库状态转移的系统,其特征在于, 所述操作请求发送子单元,具体用于向上一检测时刻获知的主数据库服务器发送操作 请求; 所述主备状态转移判断子单元,具体用于如果未能接收到所述上一检测时刻获知的主 数据库服务器针对所述操作请求的正确的处理结果,则判定发生主备数据库服务器的状态 转移;并触发所述操作请求发送子单元向其它。

10、数据库服务器发送操作请求,以便根据当前 的主数据库服务器返回的正确的执行结果,确定当前的主数据库服务器。 15.根据权利要求13所述的处理数据库状态转移的系统,其特征在于, 所述操作请求发送子单元,具体用于向系统中所有的数据库服务器发送操作请求; 所述主备状态转移判断子单元,具体用于根据各数据库服务器对所述操作请求的不同 处理结果,确定当前的主数据库服务器;如果当前的主数据库服务器与上一检测时刻获知 的主数据库服务器不同,判定发生主备数据库服务器的状态转移。 16.根据权利要求11或12所述的处理数据库状态转移的系统,其特征在于,所述主备 状态转移检测单元,进一步包括: 配置文件读取子单元,用。

11、于通过读取包含有当前主数据库服务器标识信息的配置文件 的方式,获知当前的主数据库服务器,如果当前的主数据库服务器与上一检测时刻获知的 主数据库服务器不同,判定发生主备数据库服务器的状态转移。 17.根据权利要求11所述的处理数据库状态转移的系统,其特征在于,所述主备状态 转移通知单元,具体用于使用推模式,将携带有已发生主备数据库服务器状态转移和当前 的主数据库服务器标识信息的通知推送到数据库应用层。 权 利 要 求 书CN 102841895 A 3/3页 4 18.根据权利要求11所述的处理数据库状态转移的系统,其特征在于,所述主备状态 转移检测单元,具体用于对计划中的主备数据库服务器转移操。

12、作进行统一检测;或 对非计划系统故障导致的主备数据库服务器转移进行统一检测。 19.根据权利要求11所述的处理数据库状态转移的系统,其特征在于,进一步包括:应 用层注册单元,用于接收数据库应用层在启动时或者启动后的特定时间内的注册请求,并 在注册信息中保存应用层所在的连接建立相关信息; 所述主备状态转移通知单元,具体用于当主备状态转移通知单元检测到主备数据库服 务器发生状态转移后,读取注册信息获得数据库应用层的连接建立相关信息,通过连接建 立相关信息通知数据库应用层,以便所述数据库应用层接收到该通知后执行与主备数据库 服务器状态对应的切换操作。 20.根据权利要求11、12、17-19任一项所。

13、述的处理数据库状态转移的系统,其特征在 于,所述主备数据库服务器包括分布式数据库系统的数据库集群中的主备数据库服务器。 权 利 要 求 书CN 102841895 A 1/8页 5 一种处理数据库状态转移的方法和系统 技术领域 0001 本申请涉及数据库领域,特别涉及一种处理数据库状态转移的方法和系统。 背景技术 0002 随着数据库技术和计算机网络技术的不断进步,越来越多企业的信息系统使用数 据库作为存储和管理数据的工具。企业依赖于数据库系统运行其关键业务应用,几小时甚 至是几分钟的数据库服务中断都是不允许的,因此在这些应用中保证数据库的高可用性至 关重要。高可用性(HA,High Avai。

14、lability)是指,通过尽量缩短因计划中的日常维护操作 或计划外的突发系统故障所导致的服务中断时间,向用户提供持续不间断的服务。 0003 数据库系统使用计算机网络将地理位置分散而逻辑上集中的数据连接起来,可以 通过在不同物理位置提供冗余数据的方式提供数据库系统的高可用性。虽然在不同物理位 置提供冗余数据,但通常只由一台数据库服务器即主数据库服务器对外提供服务,一台或 多台数据库服务器作为备份服务器,当主数据库服务器计划停机或出现故障不能提供数据 服务时,一台备份服务器接管主数据库服务器的工作,使数据库用户能持续使用数据,实现 了数据库系统的高可用性。 0004 上述主备数据库服务器转移是。

15、由数据库系统本身提供的机制来完成的,这种机制 仅限于数据库系统内部。用户通常感觉不到主备数据库服务器状态的变化是因为在用户和 数据库之间针对不同的用户需求存在不同的应用层,这些应用层在主备数据库服务器发生 状态转移后采取了与主备数据库服务器状态对应的切换操作,使得从用户的角度感觉不到 计划内操作引起的或计划外故障发生导致的主备数据库服务器状态转移。 0005 然而,通常不同的应用层使用自己的检测逻辑检测数据库的主备数据库服务器状 态转移,当检测到发生主备数据库服务器状态转移后,各应用层根据检测的结果执行相应 的切换操作。由于检测的时间和检测的间隔各不相同,这就可能导致在主备数据库服务器 发生状。

16、态转移后的一段时间内,各应用层以不同的数据库服务器为当前的主数据库服务 器。进一步,当进行数据库写操作时,将导致数据不一致。可见,简单地采用冗余方式提供 数据库高可用性的同时,可能带来数据库状态不一致的问题。 发明内容 0006 有鉴于此,本申请提供一种处理数据库状态转移的方法和系统,针对数据库应用 层提供统一的状态转移方案,从而在一定程度上避免当数据库系统主备数据库服务器发生 状态转移时各应用层离散的切换操作所导致的数据库及其周边系统的状态不一致。 0007 本申请提供了一种处理数据库状态转移的方法,包括步骤: 0008 对主备数据库服务器的状态转移进行统一检测; 0009 如果检测到主备数。

17、据库服务器发生状态转移,通知数据库应用层以便所述数据库 应用层接收到该通知后执行与主备数据库服务器状态对应的切换操作。 0010 优选地,所述对主备数据库服务器的状态转移进行统一检测包括:根据预置的时 说 明 书CN 102841895 A 2/8页 6 间间隔探测主备数据库服务器的状态转移。 0011 优选地,所述对主备数据库服务器的状态转移进行统一检测,具体包括:根据数据 库策略,向数据库服务器发送操作请求,根据各数据库服务器对所述操作请求的不同处理 结果来判定发生主备数据库服务器的状态转移,并确定转移后的主数据库服务器。 0012 优选地,所述向数据库服务器发送操作请求,根据各数据库服务。

18、器对所述操作请 求的不同处理结果来判定发生主备数据库服务器的状态转移,并确定转移后的主数据库服 务器包括: 0013 向上一检测时刻获知的主数据库服务器发送操作请求; 0014 如果未能接收到所述上一检测时刻获知的主数据库服务器针对所述操作请求的 正确的处理结果,则判定发生主备数据库服务器的状态转移,并向其他数据库服务器发送 操作请求,根据各数据库服务器对所述操作请求的不同处理结果,确定当前的主数据库服 务器。 0015 优选地,所述向数据库服务器发送操作请求,根据各数据库服务器对所述操作请 求的不同处理结果来判定发生主备数据库服务器的状态转移,并确定转移后的主数据库服 务器包括: 0016 。

19、向系统中所有的数据库服务器发送操作请求; 0017 根据各数据库服务器对所述操作请求的不同处理结果,确定当前的主数据库服务 器; 0018 如果当前的主数据库服务器与上一检测时刻获知的主数据库服务器不同,判定发 生主备数据库服务器的状态转移。 0019 优选地,所述对主备数据库服务器的状态转移进行统一检测,具体包括: 0020 通过读取包含有当前主数据库服务器标识信息的配置文件的方式,获知当前的主 数据库服务器,如果当前的主数据库服务器与上一检测时刻获知的主数据库服务器不同, 判定发生主备数据库服务器的状态转移。 0021 优选地,所述如果检测到主备数据库服务器发生状态转移,通知数据库应用层,。

20、具 体包括:使用推模式,将携带有已发生主备数据库服务器状态转移和当前的主数据库服务 器标识信息的通知推送到数据库应用层。 0022 优选地,所述对主备数据库服务器的状态转移进行统一检测包括: 0023 对计划中的主备数据库服务器转移操作进行统一检测;或 0024 对非计划系统故障导致的主备数据库服务器转移进行统一检测。 0025 优选地,还包括: 0026 接收数据库应用层在启动时或者启动后的特定时间内的注册请求,并在注册信息 中保存应用层所在的连接建立相关信息; 0027 所述通知数据库应用层,具体包括: 0028 读取注册信息获得数据库应用层的连接建立相关信息,通过连接建立相关信息通 知数。

21、据库应用层。 0029 优选地,所述主备数据库服务器包括分布式数据库系统的数据库集群中的主备数 据库服务器。 0030 本申请提供一种处理数据库状态转移的系统,包括: 说 明 书CN 102841895 A 3/8页 7 0031 主备状态转移检测单元,用于对主备数据库服务器的状态转移进行统一检测; 0032 主备状态转移通知单元,用于当检测到主备数据库服务器发生状态转移后,通知 数据库的应用层,以便所述数据库应用层接收到该通知后执行与主备数据库服务器状态对 应的切换操作。 0033 优选地,所述主备状态转移检测单元,具体用于根据预置的时间间隔探测主备数 据库服务器的状态转移。 0034 优选。

22、地,所述主备状态转移检测单元,进一步包括: 0035 操作请求发送子单元,用于根据数据库策略,向数据库服务器发送操作请求; 0036 主备状态转移判断子单元,用于根据各数据库服务器对所述操作请求的不同处理 结果来判定发生主备数据库服务器的状态转移,并确定转移后的主数据库服务器。 0037 优选地,所述操作请求发送子单元,具体用于向上一检测时刻获知的主数据库服 务器发送操作请求; 0038 所述主备状态转移判断子单元,具体用于如果未能接收到所述上一检测时刻获知 的主数据库服务器针对所述操作请求的正确的处理结果,则判定发生主备数据库服务器的 状态转移;并触发所述操作请求发送子单元向其它数据库服务器。

23、发送操作请求,以便根据 当前的主数据库服务器返回的正确的执行结果,确定当前的主数据库服务器。 0039 优选地,所述操作请求发送子单元,具体用于向系统中所有的数据库服务器发送 操作请求; 0040 所述主备状态转移判断子单元,具体用于根据各数据库服务器对所述操作请求的 不同处理结果,确定当前的主数据库服务器;如果当前的主数据库服务器与上一检测时刻 获知的主数据库服务器不同,判定发生主备数据库服务器的状态转移。 0041 优选地,所述主备状态转移检测单元,进一步包括: 0042 配置文件读取子单元,用于通过读取包含有当前主数据库服务器标识信息的配置 文件的方式,获知当前的主数据库服务器,如果当前。

24、的主数据库服务器与上一检测时刻获 知的主数据库服务器不同,判定发生主备数据库服务器的状态转移。 0043 优选地,所述主备状态转移通知单元,具体用于使用推模式,将携带有已发生主备 数据库服务器状态转移和当前的主数据库服务器标识信息的通知推送到数据库应用层。 0044 优选地,所述主备状态转移检测单元,具体用于对计划中的主备数据库服务器转 移操作进行统一检测;或 0045 对非计划系统故障导致的主备数据库服务器转移进行统一检测。 0046 优选地,进一步包括:应用层注册单元,用于接收数据库应用层在启动时或者启动 后的特定时间内的注册请求,并在注册信息中保存应用层所在的连接建立相关信息; 0047。

25、 所述主备状态转移通知单元,具体用于当主备状态转移通知单元检测到主备数据 库服务器发生状态转移后,读取注册信息获得数据库应用层的连接建立相关信息,通过连 接建立相关信息通知数据库应用层,以便所述数据库应用层接收到该通知后执行与主备数 据库服务器状态对应的切换操作。 0048 优选地,所述主备数据库服务器包括分布式数据库系统的数据库集群中的主备数 据库服务器。 0049 根据本申请提供的具体实施例,本申请公开了以下技术效果: 说 明 书CN 102841895 A 4/8页 8 0050 本申请实施例中,引入了对主备数据库服务器状态转换的统一处理,即对主备数 据库服务器的状态转移进行统一检测,当。

26、发现发生状态转移时,通知数据库的各应用层,从 而保证了各应用层能够在同一时间获得统一的关于主备数据库服务器状态转换的通知,并 根据该通知消息执行各应用层相应的切换方案。采用统一检测和通知的方法在一定程度上 避免了各应用层离散地进行各自的检测和转换操作所导致的数据库状态不一致,提供数据 库高可用性的同时,保证了数据库状态的一致性。另外,虽然各个应用层对状态转移的具体 切换操作是不同的,但对于检测主备数据库服务器状态转移的过程却是相同的,针对数据 库应用层采用统一的检测和通知逻辑,有助于通用性的实现,降低了数据库与其应用层之 间的复杂性。 0051 当然,实施本申请的任一产品并不一定需要同时达到以。

27、上所述的所有优点。 附图说明 0052 图1为本申请的方法流程图; 0053 图2为本申请第一实施例系统结构示意图; 0054 图3为本申请的系统结构图。 具体实施方式 0055 为了使本申请的上述目的、特征、和优点能够更加明显易懂,下面结合附图和具体 实施方式对本申请作进一步详细的说明。 0056 参考图1所示,该图为本申请的方法流程图,包括以下步骤: 0057 S101:对主备数据库服务器的状态转移进行统一检测; 0058 S102:如果检测到主备数据库服务器发生状态转移,通知数据库应用层以便所述 数据库应用层接收到该通知后执行与主备数据库服务器状态对应的切换操作。 0059 在本申请实施。

28、中,通过统一的对主备数据库服务器的状态转移检测和通知,使得 数据库不同的应用层能够在同一时间范围内得到统一的关于主备数据库服务器的状态转 移信息,进而启动各自相应的切换操作,从而保证各应用层连接的数据库服务器是当前主 数据库服务器,在一定程度上避免了现有技术中可能出现的不同应用层连接到不同数据库 服务器,进而导致对不同数据源的数据进行更新等操作而引起的数据库及其周边系统的状 态不一致。 0060 参考图2所示,该图为本申请实施例所述的数据库的状态转移系统组成示意图。 该系统中,数据库系统当前有主备数据库服务器,并且由主数据库服务器对外提供数据库 服务,使用该数据库的应用层有n个,各应用层在数据。

29、库发生主备数据库服务器状态转移 时需要执行不同的与主备数据库服务器状态对应的切换操作。 0061 在实际应用中,数据库系统可能发生主备数据库服务器状态转移的原因可能是有 计划的对数据库服务器进行维护操作,例如定时轮流对当前主数据库服务器进行重启,或 发现当主数据库服务器存在潜在的硬件或软件故障,虽然该故障还没有发生但可以有计划 地提前关闭该数据库服务器进行故障排除。另外,也可能是主数据库服务器在运行中出现 了突发的硬件或软件故障,即非计划中的数据服务中断。无论上述那种原因,都将会导致主 备数据库服务器之间的状态转移,即原备份数据库服务器将接替原主数据库服务器成为当 说 明 书CN 102841。

30、895 A 5/8页 9 前主数据库服务器,并继续对外提供数据服务器。本申请实施例就是要对上述各种情况下 的主备数据库服务器的状态转移事件进行统一处理,以便数据库应用层及时执行与主备数 据库服务器状态对应的切换操作。 0062 S101)对主备数据库服务器转移的状态进行统一检测。 0063 为避免各应用层对数据库离散地进行各自的检测和转换操作所导致的数据不一 致,本申请实施例引入了对主备数据库服务器状态转移的统一检测。 0064 统一检测是否发生主备数据库服务器转换可以采取定时检测的方法,即根据预置 的时间间隔探测是否发生主备数据库服务器状态转换。具体在探测是否发生主备数据库服 务器状态转移时。

31、,可以通过多种方式实现。在其中一种实施方式下,由于数据库系统策略规 定主备数据库服务器提供的数据服务不同,即利用主备数据库服务器对同一操作请求的不 同处理结果来获得某一检测时刻的主数据库服务器,通过比较上一检测时间获得的主数据 库服务器得到主备数据库状态转移的检测结果。 0065 当检测到主数据库服务器发送状态转移时,对于如何获知哪一台数据库服务器为 当前的主数据库服务器,有不同的实现方法。通常在数据库服务器进行主备状态转移时,数 据库系统根据特定的选举算法从备份数据库服务器中选举当前的主数据库服务器。因此, 一种实现方法是当检测到主数据库服务器发送状态转移时,使用该数据库系统特定的选举 算法。

32、计算出当前的主数据库服务器。这种实现方法的前提是已知数据库系统的特定选举算 法,并且当该选举算法发生改变时,也要进行对应的调整以计算出当前的主数据库服务器。 另一种实现方法是在未知该特定算法的情况下,使用与检测主数据库服务器状态转移类似 的方法获知当前主数据库服务器。第二种方法独立于数据库系统的选举算法,不需要已知 数据库系统的特定选举算法,并且当数据库系统的选举算法发生改变时,不需要进行对应 的调整依然能检测出当前的主数据库服务器。 0066 根据上述第二种方法,具体可以采用以下实现方式: 0067 向系统中所有的数据库服务器发送操作请求;由于不同的数据库服务器对所述操 作请求的不同处理结果。

33、,只有主数据库服务器返回正确的执行结果,由此可以确定当前的 主数据库服务器;如果当前的主数据库服务器与上一检测时刻获知的主数据库服务器不 同,判定发生主备数据库服务器的状态转移。 0068 另一种实现方法是:向上一检测时刻获知的主数据库服务器发送操作请求;如果 未能接收到所述上一检测时刻获知的主数据库服务器针对所述操作请求的正确的处理结 果,则该数据库当前已经不再能提供主数据库服务,因此判定已发生主备数据库服务器的 状态转移;向其它数据库服务器发送操作请求,由于只有当前的主数据库服务器能够执行 该数据操作,因此通过主数据库服务器返回的正确的处理结果确定当前的主数据库服务 器。 0069 第二种。

34、方法避免了第一种方法中每次检查都向系统中所有的数据库服务器发送 操作请求,而是向上一检测时刻获知的主数据库服务器发送操作请求。虽然在第二种方法 中当未能接收到上一检测时刻获知的主数据库服务器针的正确的处理结果时,也向其它数 据库服务器发送操作请求,但由于发生主备状态转移的频率相对于检查频率来说是小很多 的。因此,第二种方法一定程度上节省了系统资源和网络带宽。 0070 在本实施例中,数据库系统的策略规定只有主数据库提供数据的更新或写入操作 说 明 书CN 102841895 A 6/8页 10 服务,备份数据库仅提供只读操作服务,因此可以使用以下步骤探测是否发生主备数据库 服务器状态转换: 0。

35、071 初始状态下,在某一检测时刻,向所有主备数据库服务器各发送一条数据库的更 新操作请求,主数据库服务器返回正确的处理结果,得到当前主数据库服务器的标识信息。 该标识信息可以是位置信息如IP地址,也可以是该数据库服务器的身份信息如主机名。 0072 等待设定的时间间隔后,向上一检测时刻获知的主数据库服务器发送一条数据库 的更新操作请求,若该主数据库服务器仍然返回正确的处理结果,则判定未发生主备数据 库状态转移;若该主数据库服务器返回处理结果异常,则判定已发生主备数据库服务器状 态转移,并则向系统中的备份数据库服务器发送数据库更新操作请求,由于该备份数据库 服务器已经成为当前的主数据库服务器向。

36、外提供数据服务,因此接收到该数据库服务器返 回的正确的处理结果,即确定当前的主数据库服务器。检测结果包含主备数据库服务器发 生状态转移和当前的主数据库服务器的标识信息。 0073 上述检测方法中发送“更新操作请求”,对不同的数据库策略存在不同的替代方 案,例如,若数据库的策略为主数据库服务器提供所有的数据服务包括读、写入和更新数据 服务,而备份数据库服务器不提供任何数据服务,针对这样的数据库,可发送读数据操作请 求进行检测,因为只有主数据库服务器才会返回正确的执行结果,而备份数据库服务器不 会返回正确的执行结果,由此也可以获知主备数据库服务器的工作状态。 0074 除了采用上述方式进行检测以外。

37、,还可以采用其他的方式来实现。例如,由于数据 库系统具有配置文件,该配置文件会随着数据库服务器的主备数据库服务器的状态转移实 时更新,也即,配置文件中记录了当前哪个数据库服务器为主状态,并且记录有该数据库服 务器的标识信息。因此,在需要检测主数据库服务器状态时,可以首先通过读取该配置文件 的方式,获知当前的主数据库服务器,并与上一检测时刻的读取结果进行比较,以获知是否 发生状态转移。 0075 S102如果检测到主备数据库服务器发生状态转移,通知数据库应用层以便所述数 据库应用层接收到该通知后执行与主备数据库服务器状态对应的切换操作。 0076 一旦检测到主备数据库服务器发生状态转移,可以立即。

38、将数据库发生状态转移的 消息通知给使用数据库的各应用层,使得数据库的应用层能够尽可能在同一时间获得关于 数据库状态的通知消息。该通知消息里包含数据库发生了主备数据库服务器转移,并且包 含了当前主数据库服务器的标识信息。由于数据库系统中主备数据库服务器和各个应用层 可能分布在不同的物理位置,它们之间通过网络连接,所以存在时延,但是由于传播时延在 数量级上远小于探测时间间隔,因此可以忽略这种正常网络时延带来的影响。 0077 为更加迅速地通知数据库应用层,可采用预先注册的方法,即数据库应用层在启 动时或者启动后的特定时间内进行注册,注册的信息包括应用层所在的连接建立相关信 息,这些信息可以是应用层。

39、名称以及位置信息如应用层所在主机IP地址。以便当检测到主 备数据库服务器发生状态转移后,根据注册表内所包括的注册信息将所述通知发送给已注 册的应用层。 0078 通知应用层可以采用推模式,例如采用Zookeeper的Watch机制来实现,即当检测 到主备数据库服务器状态转移的事件后,将包含已发生了主备数据库服务器转移和当前主 数据库服务器标识信息的通知消息推送给各个应用层。当然,在实际应用中,除了这种推模 说 明 书CN 102841895 A 10 7/8页 11 式以外,也可以采用其他方式来实现,这里不再一一列举。 0079 数据库的应用层接收到主备数据库服务器转移的通知后执行与现有技术类。

40、似的 相应的状态切换操作。例如,根据数据库的主备数据库服务器状态调整数据源对象,具体包 括:断开与原主数据库服务器的连接,并与转移后的主数据库服务器建立连接,从而通过新 建立的连接,实现使用转移后的主数据库服务器提供的数据服务。 0080 由于数据库各应用层需要执行的与主备数据库服务器状态对应的切换操作各有 所不同,因此,将执行各自切换操作的功能依然保留在每个应用层内部实现,使得各个应用 层能够利用统一的通知消息完成各自的切换操作,保证了操作的正确性。 0081 根据具体应用需要,在主备数据库服务器发生状态转移之后,为获得下一轮数据 库状态的检测消息,可能需要调整检测操作,如转变探测的目标节点。

41、,由检测原主数据库服 务器变更为检测当前的主数据库服务器,以便在等待设定的时间间隔后向当前主数据库服 务器发送用于检测的数据库操作。所述调整操作的执行可以在检测到数据库主备数据库服 务器发生转移后立即执行,也可以在向应用层发出通知后立即执行。 0082 本申请所述的处理数据库状态转移方法可应用于分布式数据库。在分布式数据库 中部署有数据库集群,该数据库集群拥有一个主数据库服务器对外提供数据服务以及至少 一个备份数据库服务器。当主备数据库服务器发生状态转移时,可通过本申请所诉的处理 数据库状态转移方法实现数据库应用层与主备数据库服务器状态对应的切换操作。 0083 参考图3所示,该图为本申请第一。

42、实施例所述处理数据库状态转移的方法对应的 系统结构图,该系统包括主备状态转移检测单元301和主备状态转移通知单元302。 0084 主备状态转移检测单元用于对主备数据库服务器的状态转移进行统一检测。主备 数据库服务器的状态转移可能是对计划中的主备数据库服务器转移操作进行统一检测或 对非计划系统故障导致的主备数据库服务器转移进行统一检测。 0085 为尽可能避免各应用层单独对主备数据库服务器的状态转移检测,从而导致在不 同的时间获得状态转移的检测结果,该检测操作由本申请实施例所引入的主备状态检测单 元统一完成。具体检测是否发生主备数据库服务器转换可以采取不同的方式,主备状态转 移检测单元可用于根。

43、据预置的时间间隔探测主备数据库服务器的状态转移。 0086 主备状态转移检测单元,进一步可包括操作请求发送子单元和主备状态转移判断 子单元。操作请求发送子单元,用于根据数据库策略,向数据库服务器发送操作请求。主备 状态转移判断子单元,用于根据各数据库服务器对所述操作请求的不同处理结果来判定发 生主备数据库服务器的状态转移,并确定转移后的主数据库服务器。 0087 在具体实现时,一种方法是:操作请求发送子单元,向上一检测时刻获知的主数据 库服务器发送操作请求;主备状态转移判断子单元如果未能接收到所述上一检测时刻获知 的主数据库服务器针对所述操作请求的正确的处理结果,则判定发生主备数据库服务器的 。

44、状态转移;并触发所述操作请求发送子单元向其它数据库服务器发送操作请求,以便根据 当前的主数据库服务器返回的正确的执行结果,确定当前的主数据库服务器。 0088 另一种方法是:操作请求发送子单元,具体向系统中所有的数据库服务器发送操 作请求;主备状态转移判断子单元根据各数据库服务器对所述操作请求的不同处理结果, 确定当前的主数据库服务器;如果当前的主数据库服务器与上一检测时刻获知的主数据库 服务器不同,判定发生主备数据库服务器的状态转移。 说 明 书CN 102841895 A 11 8/8页 12 0089 在数据库系统具有记录了当前主数据库服务器及其标识信息的配置文件时,主备 状态转移检测单。

45、元,进一步包括配置文件读取单元,用于通过读取包含有当前主数据库服 务器标识信息的配置文件的方式,获知当前的主数据库服务器,主备状态转移检测单元根 据当前的主数据库服务器与上一检测时刻获知的主数据库服务器不同,判定发生主备数据 库服务器的状态转移。 0090 当检测到发生主备数据库服务器状态转移后,为更加迅速地通知数据库应用层, 可进一步增加应用层注册单元,用于接收数据库应用层在启动时或者启动后的特定时间内 的注册请求,并在注册信息中保存应用层所在的连接建立相关信息。当主备状态转移通知 单元检测到发生主备数据库服务器转移,读取注册信息获得数据库应用层的连接建立相关 信息,通过连接建立相关信息通知。

46、数据库应用层,以便所述数据库应用层接收到该通知后 执行与主备数据库服务器状态对应的切换操作。 0091 在检测到发生了主备数据库服务器状态转移后,主备状态转移通知单元将数据库 发生状态转移的消息统一通知给使用数据库的各个应用层,使得数据库的应用层能够尽可 能在同一时间获得关于数据库状态的通知消息。该通知消息里包含数据库已发生主备数据 库服务器状态转移,并且包含了当前主数据库服务器的标识信息,因此数据库应用层能够 执行与主备数据库服务器状态对应的切换操作。主备状态转移通知单元,可以使用推模式, 将携带有已发生主备数据库服务器状态转移和当前的主数据库服务器标识信息的通知推 送到数据库应用层。 00。

47、92 在具体实现时,可以将上述各单元作为一种单独的检测通知服务或应用程序,运 行在独立的服务器上,同时,可以在各应用层分别部署监听模块。检测通知服务或应用程序 通过网络与数据库、应用层监听模块连接,并在检测到主备数据库服务器状态转移消息时, 统一通知给应用层监听模块以便应用层启动与主备数据库服务器状态对应的切换操作。 0093 本实施例所描述的处理数据库状态转移的系统,可用于分布式数据库系统中,主 备数据库服务器包括分布式数据库系统的数据库集群中的主备数据库服务器。 0094 以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精 神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。 说 明 书CN 102841895 A 12 1/2页 13 图1 图2 说 明 书 附 图CN 102841895 A 13 2/2页 14 图3 说 明 书 附 图CN 102841895 A 14 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1