公开/公告号CN102103613A
专利类型发明专利
公开/公告日2011-06-22
原文格式PDF
申请/专利权人 中兴通讯股份有限公司;
申请/专利号CN200910243455.5
发明设计人 郑国斌;
申请日2009-12-22
分类号G06F17/30(20060101);
代理机构11243 北京银龙知识产权代理有限公司;
代理人许静
地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部
入库时间 2023-12-18 02:47:37
法律状态公告日
法律状态信息
法律状态
2013-06-12
授权
授权
2011-08-03
实质审查的生效 IPC(主分类):G06F17/30 申请日:20091222
实质审查的生效
2011-06-22
公开
公开
技术领域
本发明涉及分布式数据库领域,特别涉及一种分布式数据库升级的方法、升级处理装置及升级控制装置。
背景技术
随着信息技术(Information Technology,简称IT)软硬件的发展以及社会信息化进程的不断加快,分布式数据库在通讯、金融等行业内的应用越来越广泛。分布式数据库可以实现大容量、多类别的数据存储,又能通过多个数据库设备之间的协同工作,对外提供高性能的数据访问服务,同时还能通过分布在多个站点上的数据库设备实现数据在站点级别的容灾,极大地保证了数据的可靠性和安全性。
引入分布式数据库同时也给数据库的升级维护工作带来了很大的复杂度和风险,发明人在实现本发明的过程中,发现现有技术中分布式数据库在进行在线升级时存在以下缺陷:在数据库设备在利用新的数据库脚本创建新增的数据对象,对数据库进行升级时,对外提供的数据访问服务会有中断,影响业务/应用访问数据库的质量。在通信行业中,如果出现部分数据库设备不能工作,则会造成响应时延,影响终端用户体验。
发明内容
本发明要解决的技术问题是提供一种分布式数据库升级的方法、升级处理装置及升级控制装置,能够解决分布式数据库在升级过程中出现业务中断的问题。
为解决上述技术问题,本发明的实施例提供技术方案如下:
一方面,提供一种分布式数据库升级的方法,所述分布式数据库包括至少两个数据库设备,每个数据库设备上部署有升级处理装置,所述方法包括:
所述升级处理装置接收并存储升级控制装置发送的第一数据库脚本;
所述升级处理装置根据所述第一数据库脚本创建新的数据对象,升级所述数据库设备的数据库;
升级成功后,所述升级处理装置将数据库脚本从第二数据库脚本切换为所述第一数据库脚本,所述第二数据库脚本为所述升级处理装置在升级前以及升级过程中用于处理数据访问请求的数据库脚本。
其中,所述升级处理装置接收并存储升级控制装置发送的第一数据库脚本的步骤之前还包括:
所述升级处理装置接收所述升级控制装置发送的数据库脚本查询请求,并向所述升级控制单元返回第二数据库脚本,所述第一数据库脚本为所述升级控制装置根据返回的所述第二数据库脚本判断出所述数据库需要升级时,发送的用于所述数据库升级的脚本。
其中,所述升级处理装置将数据库脚本从第二数据库脚本切换为所述第一数据库脚本的步骤之后还包括:
若所述数据库设备接收到数据访问请求,所述升级处理装置使用所述第一数据库脚本处理所述数据访问请求。
其中,所述升级处理装置将数据库脚本从第二数据库脚本切换为所述第一数据库脚本的步骤之后还包括:
所述升级处理装置向所述升级控制装置返回升级结果。
其中,所述升级处理装置向所述升级控制装置返回升级结果的步骤之后还包括:
升级成功的数据库对应的升级处理装置接收所述升级控制装置发送的回退请求,所述回退请求为所述升级控制装置在部分数据库升级失败时发送的请求;
所述升级处理装置将数据库脚本从所述第一数据库脚本切换为所述第二数据库脚本,并删除所述新创建的数据对象。
本发明实施例还提供了一种升级处理装置,部署在分布式数据库的每个数据库设备上,所述装置包括:
接收模块,用于接收升级控制装置发送的第一数据库脚本;
存储模块,用于存储所述接收模块接收到的第一数据库脚本;
升级模块,用于根据所述第一数据库脚本创建新的数据对象,升级所述数据库设备的数据库;
切换模块,用于在升级成功后,将数据库脚本从第二数据库脚本切换为所述第一数据库脚本,所述第二数据库脚本为所述升级处理装置在升级前以及升级过程中用于处理数据访问请求的数据库脚本。
其中,所述装置还包括:
查询模块,用于接收所述升级控制装置发送的数据库脚本查询请求,并查询所述数据库设备当前的数据库脚本;
发送模块,用于向所述升级控制装置返回第二数据库脚本,所述第一数据库脚本为所述升级控制装置根据返回的所述第二数据库脚本判断出所述数据库需要升级时,发送的用于所述数据库升级的脚本。
其中,所述装置还包括:
处理模块,用于在所述切换模块将数据库脚本从第二数据库脚本切换为所述第一数据库脚本之后,使用所述第一数据库脚本处理所述数据库设备接收到的数据访问请求。
其中,所述装置还包括:
接收回退请求模块,用于在升级成功后,接收所述升级控制装置发送的回退请求,所述回退请求为所述升级控制装置在部分数据库升级失败时发送的请求;
回退模块,用于将数据库脚本从所述第一数据库脚本切换为所述第二数据库脚本,并删除所述新创建的数据对象。
本发明实施例还提供了一种升级控制装置,用于分布式数据库的升级,所述分布式数据库包括至少两个数据库设备,每个数据库设备上部署有升级处理装置,包括:
发送模块,用于向所述升级处理装置发送数据库脚本查询请求;
控制模块,用于根据所述升级处理装置返回的第二数据库脚本判断出所述数据库设备的数据库需要升级,控制所述发送模块向所述升级处理装置发送用于所述数据库升级的第一数据库脚本。
其中,所述装置还包括:
接收模块,用于接收所述升级处理装置返回的存储结果;
所述发送模块还用于根据所述接收模块接收到的存储结果,向存储成功的升级处理装置发送升级请求。
其中,所述接收模块还用于接收所述升级处理装置返回的升级结果;
所述发送模块还用于根据所述接收模块接收到的升级结果,在部分数据库升级失败时向升级成功的升级处理装置发送回退请求。
本发明的实施例具有以下有益效果:
上述方案中,通过升级控制装置集中控制分布式数据库中多个升级处理装置的升级进度来实现集中升级,升级处理装置同时保存升级前后的至少2份数据库脚本,升级处理装置在创建升级后的新的数据对象过程中并不切换数据库脚本,这样在升级过程中仍然可以使用升级前的数据库脚本处理数据访问请求,从而实现在升级的过程中业务不中断,保证数据访问质量。
附图说明
图1为本发明的实施例分布式数据库升级的方法的流程示意图;
图2为本发明的实施例升级处理装置的内部结构示意图;
图3为本发明的实施例升级控制装置的内部结构示意图;
图4为本发明的实施例升级控制装置与升级处理装置之间的关系示意图;
图5为本发明的实施例分布式数据库升级的方法的另一流程示意图。
具体实施方式
为使本发明的实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明的实施例针对现有技术中分布式数据库在升级过程中出现业务中断的问题,提供一种分布式数据库升级的方法、升级处理装置及升级控制装置,能够避免分布式数据库在升级过程中出现业务中断。
本发明实施例提供了一种分布式数据库升级的方法,该分布式数据库包括至少两个数据库设备,每个数据库设备上部署有升级处理装置,如图1所示,本实施例包括:
步骤101:升级处理装置接收并存储升级控制装置发送的第一数据库脚本;
步骤102:升级处理装置根据第一数据库脚本创建新的数据对象,升级数据库设备的数据库;
步骤103:升级成功后,升级处理装置将数据库脚本从第二数据库脚本切换为第一数据库脚本,第二数据库脚本为升级处理装置在升级前以及升级过程中用于处理数据访问请求的数据库脚本。
其中,第一数据库脚本为升级处理装置接收到的新数据库脚本,第二数据库脚本对应为升级处理装置之前存储的旧数据库脚本。
本实施例的分布式数据库升级的方法,升级处理装置同时保存有升级前和升级后的数据库脚本,在创建升级后的新的数据对象,对数据库进行升级的过程中并不切换数据库脚本,这样在升级过程中仍然可以使用升级前的数据库脚本处理数据访问请求,从而实现在升级的过程中业务不中断,保证数据访问质量。
本发明实施例还提供了一种升级处理装置,部署在分布式数据库的每个数据库设备上,如图2所示,本实施例包括:
接收模块20,用于接收升级控制装置发送的第一数据库脚本;
存储模块21,用于存储接收模块20接收到的第一数据库脚本;
升级模块22,用于根据第一数据库脚本创建新的数据对象,升级数据库设备的数据库;
切换模块23,用于在升级成功后,将数据库脚本从第二数据库脚本切换为第一数据库脚本,第二数据库脚本为升级处理装置在升级前以及升级过程中用于处理数据访问请求的数据库脚本。
其中,该装置还包括:
查询模块24,用于接收升级控制装置发送的数据库脚本查询请求,并查询数据库设备当前的数据库脚本;
发送模块25,用于向升级控制装置返回第二数据库脚本,第一数据库脚本为升级控制装置根据返回的第二数据库脚本判断出数据库需要升级时,发送的用于数据库升级的脚本。
该装置还包括:
处理模块26,用于在切换模块23将数据库脚本从第二数据库脚本切换为第一数据库脚本之后,使用第一数据库脚本处理数据库设备接收到的数据访问请求。
处理模块26还用于在切换模块23将数据库脚本从第二数据库脚本切换为第一数据库脚本之前,使用第二数据库脚本处理数据库设备接收到的数据访问请求。
该装置还包括:
接收回退请求模块27,用于在升级成功后,接收升级控制装置发送的回退请求,回退请求为升级控制装置在部分数据库升级失败时发送的请求;
回退模块28,用于将数据库脚本从第一数据库脚本切换为第二数据库脚本,并删除新创建的数据对象。
分布式数据库上的多个升级处理装置之间不需要连接。
其中,第一数据库脚本为升级处理装置接收到的新数据库脚本,第二数据库脚本对应为升级处理装置之前存储的旧数据库脚本。
本实施例的升级处理装置,同时保存有升级前和升级后的数据库脚本,在创建升级后的新的数据对象,对数据库进行升级的过程中并不切换数据库脚本,这样在升级过程中仍然可以使用升级前的数据库脚本处理数据访问请求,从而实现在升级的过程中业务不中断,保证数据访问质量。本实施例在升级成功后不删除升级前的数据库脚本,这样在接收到回退请求时,能够减少回退的工作量,提高回退效率,保证回退不产生错误,从而避免数据访问服务质量下降。
本发明实施例还提供了一种升级控制装置,用于分布式数据库的升级,分布式数据库包括至少两个数据库设备,每个数据库设备上部署有升级处理装置,如图3所示,本实施例包括:
发送模块30,用于向升级处理装置发送数据库脚本查询请求;
控制模块31,用于根据升级处理装置返回的第二数据库脚本判断出数据库设备的数据库需要升级,控制发送模块31向升级处理装置发送用于数据库升级的第一数据库脚本。
其中,该装置还包括:
接收模块32,用于接收升级处理装置返回的存储结果;
发送模块30还用于根据接收模块32接收到的存储结果,向存储成功的升级处理装置发送升级请求。
其中,接收模块32还用于接收升级处理装置返回的升级结果;
发送模块30还用于根据接收模块32接收到的升级结果,在部分数据库升级失败时向升级成功的升级处理装置发送回退请求。
本实施例的升级控制装置可以和某一个升级处理装置部署在同一台数据库设备上,也可以单独部署在一台计算机设备上。升级控制装置和升级处理装置之间通过包括局域网和广域网在内的网络相连接。
本实施例的升级控制装置,能够集中控制分布式数据库中的多个数据库设备的升级或者回退进度,从而实现分布式数据库的集中升级,避免分布式数据库不同数据库设备之间的数据库版本不一致,导致业务/应用访问的数据不一致的问题。
在实际应用中,升级控制装置与升级处理装置之间的关系示意图如图4所示。下面结合图5对本发明实施例的分布式数据库升级的方法进行进一步介绍,如图5所示,本实施例包括:
步骤501:升级控制装置向升级处理装置发送数据库版本查询请求;
升级控制装置向升级处理装置(图5中只画出了1个升级处理装置作为示意)发送数据库版本查询请求,要求查询数据库版本信息;
步骤502:升级处理装置向升级控制装置返回数据库版本信息;
升级处理装置查询数据库设备的数据库版本信息,并向升级控制装置返回数据库设备的版本信息;
步骤503:升级控制装置确认需要升级的数据库设备;
升级控制装置根据升级处理装置返回的数据库版本信息,确认要升级的数据库设备;比如升级控制装置需要所有的数据库设备升级为使用新数据库脚本,首先查询数据库设备目前使用的数据库脚本,如果接收到一些数据库设备上的升级处理装置返回的数据库版本信息为数据库设备使用的是旧数据库脚本,那么就确认这些数据库设备需要进行升级;如果一些数据库设备使用的虽然是旧数据库脚本,但是并不需要升级,也不影响其他需要升级的数据库设备,那么也可以不对这些数据库进行升级;
步骤504:升级控制装置向升级处理装置发送新数据库脚本;
升级控制装置向需要升级的一个或者多个数据库设备上的升级处理装置发送新数据库脚本;如果升级控制装置与升级处理装置之间的带宽有限,升级控制装置可以将新数据库脚本进行压缩后再发送给升级处理装置;
步骤505:升级处理装置接收并保存新数据库脚本;
数据库设备上的升级处理装置接收并保存新数据库脚本到本地存储介质中,同时升级处理装置还保存有旧数据库脚本;
步骤506:升级处理装置向升级控制装置返回存储结果;
数据库设备上的升级处理装置向升级控制装置返回新数据库脚本存储结果;
步骤507:升级控制装置向存储成功的升级处理装置发送升级请求;
升级控制装置根据接收到的存储结果,向成功接收并存储新数据库脚本的升级处理装置发送升级请求。对于保存新数据库脚本失败或者在第一预设时间内未返回存储结果的升级处理装置,升级控制装置可以采用重发机制,在第二预设时间之后再向上述升级处理装置重新发送新数据库脚本;
步骤508:升级处理装置根据新数据库脚本创建新增的数据对象;
升级处理装置比较升级后的新数据库脚本和升级前的旧数据库脚本是否兼容,分析出新数据库脚本新增的数据对象,同时使用旧数据库脚本处理来自业务/应用的数据访问请求,保证业务/应用访问数据库的请求能被正常处理。
在分析新数据库脚本成功并且判断新旧数据库脚本兼容后,升级处理装置创建新增的数据对象,升级所在数据库设备的数据库,在创建新增数据对象的同时,使用旧数据库脚本处理来自业务/应用的数据访问请求;
步骤509:升级处理装置切换数据库脚本;
升级成功后,升级处理装置使用新数据库脚本处理自业务/应用的数据访问请求;
步骤510:升级处理装置向升级控制装置返回升级结果。
在步骤508中,如果升级处理装置分析新数据库失败或者新旧数据库脚本不兼容,或者升级处理装置创建新增数据对象失败,升级处理装置会向升级控制装置返回为升级失败的升级结果,否则返回为升级成功的升级结果。
如果升级过程中出现部分数据库设备升级失败,也就是升级控制装置在向升级处理装置发送升级请求之后,在第三预设时间内未接收到部分升级处理装置返回的升级结果或者接收到部分升级处理装置返回的为升级失败的升级结果,则需要进行如下步骤:
步骤511:升级控制装置向升级成功的升级处理装置发送回退请求;
在部分数据库升级失败后,升级控制装置向升级成功的数据库设备的升级处理装置,也就是返回为升级成功的升级结果的升级处理装置发送回退请求;
步骤512:升级处理装置切换数据库脚本,并删除新创建的数据对象;
升级处理装置接收到回退请求后,把处理业务/应用的数据访问请求切换为升级前的旧数据库脚本,自动删除升级后创建的新增数据对象;
步骤513:升级处理装置向升级控制装置返回回退结果。
其中,在升级前后或者升级过程中,升级控制装置均可以向升级处理装置查询数据库设备的版本信息,升级处理装置查询数据库版本信息后返回给升级控制装置。
本实施例的分布式数据库升级的方法,可以实现分布式数据库的多个数据库设备上的数据库集中升级,避免多个数据库设备数据不一致的问题。并且在升级过程中,升级处理装置同时保存升级前后的至少2份数据库脚本,升级处理装置在创建升级后的新的数据对象过程中并不切换数据库脚本,这样在升级过程中仍然可以使用升级前的数据库脚本处理数据访问请求,从而实现在升级的过程中业务不中断,保证数据访问质量。
所述方法实施例是与所述装置实施例相对应的,在方法实施例中未详细描述的部分参照装置实施例中相关部分的描述即可,在装置实施例中未详细描述的部分参照方法实施例中相关部分的描述即可。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括如上述方法实施例的步骤,所述的存储介质,如:磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
在本发明各方法实施例中,所述各步骤的序号并不能用于限定各步骤的先后顺序,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,对各步骤的先后变化也在本发明的保护范围之内。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
机译: 分布式数据库升级方法,升级处理设备和升级控制设备
机译: 分布式数据库群集中的数据库升级
机译: 分布式系统的升级方法,分布式系统和升级管理设备