分布式数据库升级的方法、升级处理装置及升级控制装置的制作方法

文档序号:6585320阅读:225来源:国知局
专利名称:分布式数据库升级的方法、升级处理装置及升级控制装置的制作方法
技术领域
本发明涉及分布式数据库领域,特别涉及一种分布式数据库升级的方法、升级处 理装置及升级控制装置。
背景技术
随着信息技术anformation Technology,简称IT)软硬件的发展以及社会信息 化进程的不断加快,分布式数据库在通讯、金融等行业内的应用越来越广泛。分布式数据库 可以实现大容量、多类别的数据存储,又能通过多个数据库设备之间的协同工作,对外提供 高性能的数据访问服务,同时还能通过分布在多个站点上的数据库设备实现数据在站点级 别的容灾,极大地保证了数据的可靠性和安全性。引入分布式数据库同时也给数据库的升级维护工作带来了很大的复杂度和风险, 发明人在实现本发明的过程中,发现现有技术中分布式数据库在进行在线升级时存在以下 缺陷在数据库设备在利用新的数据库脚本创建新增的数据对象,对数据库进行升级时,对 外提供的数据访问服务会有中断,影响业务/应用访问数据库的质量。在通信行业中,如果 出现部分数据库设备不能工作,则会造成响应时延,影响终端用户体验。

发明内容
本发明要解决的技术问题是提供一种分布式数据库升级的方法、升级处理装置及 升级控制装置,能够解决分布式数据库在升级过程中出现业务中断的问题。为解决上述技术问题,本发明的实施例提供技术方案如下一方面,提供一种分布式数据库升级的方法,所述分布式数据库包括至少两个数 据库设备,每个数据库设备上部署有升级处理装置,所述方法包括所述升级处理装置接收并存储升级控制装置发送的第一数据库脚本;所述升级处理装置根据所述第一数据库脚本创建新的数据对象,升级所述数据库 设备的数据库;升级成功后,所述升级处理装置将数据库脚本从第二数据库脚本切换为所述第一 数据库脚本,所述第二数据库脚本为所述升级处理装置在升级前以及升级过程中用于处理 数据访问请求的数据库脚本。其中,所述升级处理装置接收并存储升级控制装置发送的第一数据库脚本的步骤 之前还包括所述升级处理装置接收所述升级控制装置发送的数据库脚本查询请求,并向所述 升级控制单元返回第二数据库脚本,所述第一数据库脚本为所述升级控制装置根据返回的 所述第二数据库脚本判断出所述数据库需要升级时,发送的用于所述数据库升级的脚本。其中,所述升级处理装置将数据库脚本从第二数据库脚本切换为所述第一数据库 脚本的步骤之后还包括若所述数据库设备接收到数据访问请求,所述升级处理装置使用所述第一数据库脚本处理所述数据访问请求。其中,所述升级处理装置将数据库脚本从第二数据库脚本切换为所述第一数据库 脚本的步骤之后还包括所述升级处理装置向所述升级控制装置返回升级结果。其中,所述升级处理装置向所述升级控制装置返回升级结果的步骤之后还包括升级成功的数据库对应的升级处理装置接收所述升级控制装置发送的回退请求, 所述回退请求为所述升级控制装置在部分数据库升级失败时发送的请求;所述升级处理装置将数据库脚本从所述第一数据库脚本切换为所述第二数据库 脚本,并删除所述新创建的数据对象。本发明实施例还提供了 一种升级处理装置,部署在分布式数据库的每个数据库设 备上,所述装置包括接收模块,用于接收升级控制装置发送的第一数据库脚本;存储模块,用于存储所述接收模块接收到的第一数据库脚本;升级模块,用于根据所述第一数据库脚本创建新的数据对象,升级所述数据库设 备的数据库;切换模块,用于在升级成功后,将数据库脚本从第二数据库脚本切换为所述第一 数据库脚本,所述第二数据库脚本为所述升级处理装置在升级前以及升级过程中用于处理 数据访问请求的数据库脚本。其中,所述装置还包括查询模块,用于接收所述升级控制装置发送的数据库脚本查询请求,并查询所述 数据库设备当前的数据库脚本;发送模块,用于向所述升级控制装置返回第二数据库脚本,所述第一数据库脚本 为所述升级控制装置根据返回的所述第二数据库脚本判断出所述数据库需要升级时,发送 的用于所述数据库升级的脚本。其中,所述装置还包括处理模块,用于在所述切换模块将数据库脚本从第二数据库脚本切换为所述第一 数据库脚本之后,使用所述第一数据库脚本处理所述数据库设备接收到的数据访问请求。其中,所述装置还包括接收回退请求模块,用于在升级成功后,接收所述升级控制装置发送的回退请求, 所述回退请求为所述升级控制装置在部分数据库升级失败时发送的请求;回退模块,用于将数据库脚本从所述第一数据库脚本切换为所述第二数据库脚 本,并删除所述新创建的数据对象。本发明实施例还提供了一种升级控制装置,用于分布式数据库的升级,所述分布 式数据库包括至少两个数据库设备,每个数据库设备上部署有升级处理装置,包括发送模块,用于向所述升级处理装置发送数据库脚本查询请求;控制模块,用于根据所述升级处理装置返回的第二数据库脚本判断出所述数据库 设备的数据库需要升级,控制所述发送模块向所述升级处理装置发送用于所述数据库升级 的第一数据库脚本。其中,所述装置还包括
接收模块,用于接收所述升级处理装置返回的存储结果;所述发送模块还用于根据所述接收模块接收到的存储结果,向存储成功的升级处 理装置发送升级请求。其中,所述接收模块还用于接收所述升级处理装置返回的升级结果;所述发送模块还用于根据所述接收模块接收到的升级结果,在部分数据库升级失 败时向升级成功的升级处理装置发送回退请求。本发明的实施例具有以下有益效果上述方案中,通过升级控制装置集中控制分布式数据库中多个升级处理装置的升 级进度来实现集中升级,升级处理装置同时保存升级前后的至少2份数据库脚本,升级处 理装置在创建升级后的新的数据对象过程中并不切换数据库脚本,这样在升级过程中仍然 可以使用升级前的数据库脚本处理数据访问请求,从而实现在升级的过程中业务不中断, 保证数据访问质量。


图1为本发明的实施例分布式数据库升级的方法的流程示意图;图2为本发明的实施例升级处理装置的内部结构示意图;图3为本发明的实施例升级控制装置的内部结构示意图;图4为本发明的实施例升级控制装置与升级处理装置之间的关系示意图;图5为本发明的实施例分布式数据库升级的方法的另一流程示意图。
具体实施例方式为使本发明的实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合 附图及具体实施例进行详细描述。本发明的实施例针对现有技术中分布式数据库在升级过程中出现业务中断的问 题,提供一种分布式数据库升级的方法、升级处理装置及升级控制装置,能够避免分布式数 据库在升级过程中出现业务中断。本发明实施例提供了一种分布式数据库升级的方法,该分布式数据库包括至少两 个数据库设备,每个数据库设备上部署有升级处理装置,如图1所示,本实施例包括步骤101 升级处理装置接收并存储升级控制装置发送的第一数据库脚本;步骤102 升级处理装置根据第一数据库脚本创建新的数据对象,升级数据库设 备的数据库;步骤103 升级成功后,升级处理装置将数据库脚本从第二数据库脚本切换为第 一数据库脚本,第二数据库脚本为升级处理装置在升级前以及升级过程中用于处理数据访 问请求的数据库脚本。其中,第一数据库脚本为升级处理装置接收到的新数据库脚本,第二数据库脚本 对应为升级处理装置之前存储的旧数据库脚本。本实施例的分布式数据库升级的方法,升级处理装置同时保存有升级前和升级后 的数据库脚本,在创建升级后的新的数据对象,对数据库进行升级的过程中并不切换数据 库脚本,这样在升级过程中仍然可以使用升级前的数据库脚本处理数据访问请求,从而实现在升级的过程中业务不中断,保证数据访问质量。本发明实施例还提供了 一种升级处理装置,部署在分布式数据库的每个数据库设 备上,如图2所示,本实施例包括接收模块20,用于接收升级控制装置发送的第一数据库脚本;存储模块21,用于存储接收模块20接收到的第一数据库脚本;升级模块22,用于根据第一数据库脚本创建新的数据对象,升级数据库设备的数 据库;切换模块23,用于在升级成功后,将数据库脚本从第二数据库脚本切换为第一数 据库脚本,第二数据库脚本为升级处理装置在升级前以及升级过程中用于处理数据访问请 求的数据库脚本。其中,该装置还包括查询模块M,用于接收升级控制装置发送的数据库脚本查询请求,并查询数据库 设备当前的数据库脚本;发送模块25,用于向升级控制装置返回第二数据库脚本,第一数据库脚本为升级 控制装置根据返回的第二数据库脚本判断出数据库需要升级时,发送的用于数据库升级的 脚本。该装置还包括处理模块沈,用于在切换模块23将数据库脚本从第二数据库脚本切换为第一数 据库脚本之后,使用第一数据库脚本处理数据库设备接收到的数据访问请求。处理模块沈还用于在切换模块23将数据库脚本从第二数据库脚本切换为第一数 据库脚本之前,使用第二数据库脚本处理数据库设备接收到的数据访问请求。该装置还包括接收回退请求模块27,用于在升级成功后,接收升级控制装置发送的回退请求,回 退请求为升级控制装置在部分数据库升级失败时发送的请求;回退模块观,用于将数据库脚本从第一数据库脚本切换为第二数据库脚本,并删 除新创建的数据对象。分布式数据库上的多个升级处理装置之间不需要连接。其中,第一数据库脚本为升级处理装置接收到的新数据库脚本,第二数据库脚本 对应为升级处理装置之前存储的旧数据库脚本。本实施例的升级处理装置,同时保存有升级前和升级后的数据库脚本,在创建升 级后的新的数据对象,对数据库进行升级的过程中并不切换数据库脚本,这样在升级过程 中仍然可以使用升级前的数据库脚本处理数据访问请求,从而实现在升级的过程中业务不 中断,保证数据访问质量。本实施例在升级成功后不删除升级前的数据库脚本,这样在接收 到回退请求时,能够减少回退的工作量,提高回退效率,保证回退不产生错误,从而避免数 据访问服务质量下降。本发明实施例还提供了一种升级控制装置,用于分布式数据库的升级,分布式数 据库包括至少两个数据库设备,每个数据库设备上部署有升级处理装置,如图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)等。在本发明各方法实施例中,所述各步骤的序号并不能用于限定各步骤的先后顺 序,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,对各步骤的先后变化也 在本发明的保护范围之内。以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员 来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也 应视为本发明的保护范围。
权利要求
1.一种分布式数据库升级的方法,其特征在于,所述分布式数据库包括至少两个数据 库设备,每个数据库设备上部署有升级处理装置,所述方法包括所述升级处理装置接收并存储升级控制装置发送的第一数据库脚本;所述升级处理装置根据所述第一数据库脚本创建新的数据对象,升级所述数据库设备 的数据库;升级成功后,所述升级处理装置将数据库脚本从第二数据库脚本切换为所述第一数据 库脚本,所述第二数据库脚本为所述升级处理装置在升级前以及升级过程中用于处理数据 访问请求的数据库脚本。
2.根据权利要求1所述的分布式数据库升级的方法,其特征在于,所述升级处理装置 接收并存储升级控制装置发送的第一数据库脚本之前还包括所述升级处理装置接收所述升级控制装置发送的数据库脚本查询请求,并向所述升级 控制单元返回第二数据库脚本,所述第一数据库脚本为所述升级控制装置根据返回的所述 第二数据库脚本判断出所述数据库需要升级时,发送的用于所述数据库升级的脚本。
3.根据权利要求1所述的分布式数据库升级的方法,其特征在于,所述升级处理装置 将数据库脚本从第二数据库脚本切换为所述第一数据库脚本之后还包括若所述数据库设备接收到数据访问请求,所述升级处理装置使用所述第一数据库脚本 处理所述数据访问请求。
4.根据权利要求1所述的分布式数据库升级的方法,其特征在于,所述升级处理装置 将数据库脚本从第二数据库脚本切换为所述第一数据库脚本之后还包括所述升级处理装置向所述升级控制装置返回升级结果。
5.根据权利要求1或4所述的分布式数据库升级的方法,其特征在于,所述升级处理装 置向所述升级控制装置返回升级结果之后还包括升级成功的数据库对应的升级处理装置接收所述升级控制装置发送的回退请求,所述 回退请求为所述升级控制装置在部分数据库升级失败时发送的请求;所述升级处理装置将数据库脚本从所述第一数据库脚本切换为所述第二数据库脚本, 并删除所述新创建的数据对象。
6.一种升级处理装置,其特征在于,部署在分布式数据库的每个数据库设备上,所述装 置包括接收模块,用于接收升级控制装置发送的第一数据库脚本;存储模块,用于存储所述接收模块接收到的第一数据库脚本;升级模块,用于根据所述第一数据库脚本创建新的数据对象,升级所述数据库设备的 数据库;切换模块,用于在升级成功后,将数据库脚本从第二数据库脚本切换为所述第一数据 库脚本,所述第二数据库脚本为所述升级处理装置在升级前以及升级过程中用于处理数据 访问请求的数据库脚本。
7.根据权利要求6所述的升级处理装置,其特征在于,所述装置还包括查询模块,用于接收所述升级控制装置发送的数据库脚本查询请求,并查询所述数据 库设备当前的数据库脚本;发送模块,用于向所述升级控制装置返回第二数据库脚本,所述第一数据库脚本为所述升级控制装置根据返回的所述第二数据库脚本判断出所述数据库需要升级时,发送的用 于所述数据库升级的脚本。
8.根据权利要求6所述的升级处理装置,其特征在于,所述装置还包括处理模块,用于在所述切换模块将数据库脚本从第二数据库脚本切换为所述第一数据 库脚本之后,使用所述第一数据库脚本处理所述数据库设备接收到的数据访问请求。
9.根据权利要求6所述的升级处理装置,其特征在于,所述装置还包括接收回退请求模块,用于在升级成功后,接收所述升级控制装置发送的回退请求,所述 回退请求为所述升级控制装置在部分数据库升级失败时发送的请求;回退模块,用于将数据库脚本从所述第一数据库脚本切换为所述第二数据库脚本,并 删除所述新创建的数据对象。
10.一种升级控制装置,其特征在于,用于分布式数据库的升级,所述分布式数据库包 括至少两个数据库设备,每个数据库设备上部署有升级处理装置,包括发送模块,用于向所述升级处理装置发送数据库脚本查询请求;控制模块,用于根据所述升级处理装置返回的第二数据库脚本判断出所述数据库设备 的数据库需要升级,控制所述发送模块向所述升级处理装置发送用于所述数据库升级的第 一数据库脚本。
11.根据权利要求10所述的升级控制装置,其特征在于,所述装置还包括接收模块,用于接收所述升级处理装置返回的存储结果;所述发送模块还用于根据所述接收模块接收到的存储结果,向存储成功的升级处理装 置发送升级请求。
12.根据权利要求10或11所述的升级控制装置,其特征在于,所述接收模块还用于接收所述升级处理装置返回的升级结果;所述发送模块还用于根据所述接收模块接收到的升级结果,在部分数据库升级失败时 向升级成功的升级处理装置发送回退请求。
全文摘要
本发明提供一种分布式数据库升级的方法、升级处理装置及升级控制装置,属于分布式数据库领域。其中,该分布式数据库升级的方法包括所述升级处理装置接收并存储升级控制装置发送的第一数据库脚本;所述升级处理装置根据所述第一数据库脚本创建新的数据对象,升级所述数据库设备的数据库;升级成功后,所述升级处理装置将数据库脚本从第二数据库脚本切换为所述第一数据库脚本,所述第二数据库脚本为所述升级处理装置在升级前以及升级过程中用于处理数据访问请求的数据库脚本。本发明各实施例能够避免分布式数据库在升级过程中出现业务中断。本发明的技术方案可以广泛应用于分布式数据库系统中。
文档编号G06F17/30GK102103613SQ20091024345
公开日2011年6月22日 申请日期2009年12月22日 优先权日2009年12月22日
发明者郑国斌 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1