服务端程序和数据库的升级方法、装置和设备制造方法及图纸

技术编号:17485873 阅读:81 留言:0更新日期:2018-03-17 10:18
本申请提供一种服务端程序和数据库的升级方法、装置和设备。该方法包括:禁用所述第二程序实体,随后更新所述第二程序实体;在更新第二程序实体之后,对当前对外提供服务的所述第一程序实体所使用的数据库进行兼容更新处理,获得第一数据库;控制更新后的第二程序实体接收访问请求并缓存所述访问请求;控制所述第一程序实体停止接收访问请求并更新所述第一程序实体,以及,对所述第一数据库进行非兼容更新处理,获得第二数据库。该方法节省了数据库热备份所需的资源,保证升级前后服务端程序访问数据库时的准确性。

Upgrade methods, devices, and devices for server-side programs and databases

【技术实现步骤摘要】
服务端程序和数据库的升级方法、装置和设备
本申请涉及数据库技术,尤其涉及一种服务端程序和数据库的升级方法、装置和设备。
技术介绍
服务端程序是一种采用客户端/服务端(C/S)结构、且运行在服务端并向用户提供业务服务的程序。服务端程序自上线提供服务后,通常都需要不断更新迭代。一般的,服务端程序在升级时,通常需要将服务端程序暂停服务后进行离线升级,待升级完成后,再次启动该升级后的服务端程序对外提供服务,这种升级方式往往造成用户在一段时间内的无法使用该服务端程序。因此,为了保证服务端程序持续对外提供服务,现有技术采用了轮转升级的方法对服务端程序进行升级,但是,该轮转升级的方法仅适用于不涉及数据库的服务端程序,而对于涉及数据库的服务端程序,该服务端程序的升级往往涉及到数据库表结构、数据内容的更新,而上述轮转升级的方法容易造成面向新旧服务端程序的数据库不一致,从而引发不兼容的问题。因此,为了避免上述问题,现有技术采用热备份的方式对数据库和服务端程序进行升级。具体为:首先对数据库进行热备份,获得两个数据库(正在提供服务的数据库A1和为升级准备的数据库为A2),两个数据库进行同步;然后在t1时刻,停止当前数据库的热备,对数据库A2执行数据库变更操作,并在数据库A2数据变更期间,升级前的服务端程序仍然读写数据库A1,待数据库A2变更完成后,启动升级后的服务端程序,并停止升级前的服务端程序,将访问请求引导到升级后的服务端程序进行处理;最后,将数据库A1在t1时刻之后的所有操作数据通过预先准备的订正语句导入上述变更后的数据库A2中,然后释放数据库A1,指示更新后的服务端程序指向最终的数据库A2。但是,现有技术的这种升级服务端程序和数据库的方法,对于大容量的数据库,备份时间长,资源浪费严重,并且当升级后的服务端程序已经采用变更后的数据库A2对外提供服务时,升级前的服务端程序对数据库的更改所产生的增量数据正在向变更后的数据库A2中迁移,数据不一致风险较大。
技术实现思路
本申请提供一种服务端程序和数据库的升级方法、装置和设备,以解决现有技术采用热备的方法升级服务端程序和数据库时,所导致的备份时间长,资源浪费严重的技术问题,并且解决现有技术中当升级后的服务端程序已经采用变更后的数据库对外提供服务时,升级前的服务端程序对数据库的更改所产生的增量数据正在向变更后的数据库中迁移,引发数据不一致的技术问题。一个方面,本申请提供一种服务端程序和数据库的升级方法,所述服务端程序包括第一程序实体和第二程序实体;所述方法包括:禁用所述第二程序实体,随后更新所述第二程序实体;在更新所述第二程序实体之后,对当前对外提供服务的所述第一程序实体所使用的数据库进行兼容更新处理,获得第一数据库;控制更新后的第二程序实体接收访问请求并缓存所述访问请求;控制所述第一程序实体停止接收访问请求并更新所述第一程序实体,以及,对所述第一数据库进行非兼容更新处理,获得第二数据库。上述所提供的服务端程序和数据库的升级方法,通过在更新当前被禁用的第二程序实体之后,对当前对外提供服务的第一程序实体所使用的数据库进行兼容更新处理得到第一数据库,然后在服务端设备在控制第一程序实体停止接收访问请求后,控制更新后的第二程序实体接收并缓存访问请求,并更新上述第一程序实体以及对第一数据库进行非兼容更新处理,获得第二数据库。本申请实施例中,通过兼容更新处理所得到第一数据库,使得当前对外提供服务的第一程序实体针对同一个访问请求,在访问升级前的数据库所得到的结果和访问兼容更新处理后的数据库(即第一数据库)所得到的结果相同,确保当前对外提供服务的第一程序实体访问升级前后的数据库时访问数据一致,避免访问结果出错;同时,通过服务端设备在第一程序实体停止接收访问请求时,控制更新后的第二程序实体接收并缓存访问请求,从而对于外部设备来讲,服务器端设备当前仍然在接收访问请求,服务端程序对外提供的业务并没有中断,保证了外部设备通过服务端程序访问数据库时的连续性;另外,服务端设备通过控制上述对升级前的数据库进行兼容更新处理和非兼容更新处理的顺序,从而使得升级前的数据库得到完整的升级操作,并且不会带来升级前后的服务端程序访问升级前的数据库和访问升级后的数据库时出现访问错误的问题,也无需对升级前的数据库进行热备,大大的节省了热备资源,并且,也不存在升级前后的数据库之间的增量数据迁移,避免出现升级前后服务端程序访问数据不一致的问题。作为一种可实现的方式,所述控制所述第一程序实体停止接收访问请求并更新所述第一程序实体,具体包括:控制所述第一程序实体停止接收访问请求,并在所述第一程序实体上的访问任务返回执行结果且在获得所述第二数据库之后,更新所述第一程序实体。作为一种可实现的方式,所述控制所述第一程序实体停止接收访问请求并更新所述第一程序实体,具体包括:控制所述第一程序实体停止接收访问请求,并在所述第一程序实体上的访问任务返回执行结果且在控制所述更新后的第二程序实体使用所述第二数据库对外提供业务服务之后,更新所述第一程序实体。作为一种可实现的方式,所述禁用所述第二程序实体,随后更新所述第二程序实体,具体包括:控制所述第二程序实体停止接收访问请求,以禁用所述第二程序实体;在所述第二程序实体上的访问任务返回执行结果后,更新当前被禁用的第二程序实体。作为一种可实现的方式,所述控制所述第二程序实体停止接收访问请求,具体包括:配置所述第二程序实体中的请求接收器的工作状态为不使能disabled状态,以控制所述第二程序实体停止接收访问请求。作为一种可实现的方式,所述控制更新后的第二程序实体接收访问请求并缓存所述访问请求,具体包括:配置所述更新后的第二程序实体中的请求接收器的工作状态为延缓请求hold模式,以控制所述更新后的第二程序实体接收访问请求并将所述访问请求进行缓存。作为一种可实现的方式,所述将所述访问请求进行缓存,具体包括:将所述访问请求缓存在所述更新后的第二程序实体的每个接收线程的堆栈中;或者,将所述访问请求缓存在所述更新后的第二程序实体的消息队列中;或者,将所述访问请求缓存在所述第一数据库中。作为一种可实现的方式,所述控制所述第一程序实体停止接收访问请求,具体包括:配置所述第一程序实体中的请求接收器的工作状态为不使能disabled状态,以控制所述第一程序实体停止接收访问请求。作为一种可实现的方式,所述第二数据库操作集合还包括至少一个兼容所述第一程序实体的第二数据库操作。作为一种可实现的方式,所述兼容更新处理对应第一数据库操作集合,所述非兼容更新处理对应第二数据库操作集合;所述第一数据库操作集合至少包括:空操作、在所述数据库中增加新的数据库表的操作、在所述数据库中增加带有默认值的数据列的操作、在所述数据库中插入预设的数据行的操作;所述第二数据库操作集合至少包括:更改所述数据库中已有的数据库表或者数据库表中的列内容的操作、删除所述第一程序实体运行时所需的数据行的操作。作为一种可实现的方式,所述方法还包括:控制更新后的第一程序实体和更新后的第二程序实体采用所述第二数据库对外提供服务。上述几种可选的实现方式,通过简单的配置第一程序实体和第二程序实体的工作状态,以及控制不同的数据库操作集合处理升级前的数据库的顺序,简化本文档来自技高网
...
服务端程序和数据库的升级方法、装置和设备

【技术保护点】
一种服务端程序和数据库的升级方法,其特征在于,所述服务端程序包括第一程序实体和第二程序实体;所述方法包括:禁用所述第二程序实体,随后更新所述第二程序实体;在更新所述第二程序实体之后,对当前对外提供服务的所述第一程序实体所使用的数据库进行兼容更新处理,获得第一数据库;控制更新后的第二程序实体接收访问请求并缓存所述访问请求;控制所述第一程序实体停止接收访问请求并更新所述第一程序实体,以及,对所述第一数据库进行非兼容更新处理,获得第二数据库。

【技术特征摘要】
1.一种服务端程序和数据库的升级方法,其特征在于,所述服务端程序包括第一程序实体和第二程序实体;所述方法包括:禁用所述第二程序实体,随后更新所述第二程序实体;在更新所述第二程序实体之后,对当前对外提供服务的所述第一程序实体所使用的数据库进行兼容更新处理,获得第一数据库;控制更新后的第二程序实体接收访问请求并缓存所述访问请求;控制所述第一程序实体停止接收访问请求并更新所述第一程序实体,以及,对所述第一数据库进行非兼容更新处理,获得第二数据库。2.根据权利要求1所述的方法,其特征在于,所述控制所述第一程序实体停止接收访问请求并更新所述第一程序实体,具体包括:控制所述第一程序实体停止接收访问请求,并在所述第一程序实体上的访问任务返回执行结果且在获得所述第二数据库之后,更新所述第一程序实体。3.根据权利要求1所述的方法,其特征在于,所述控制所述第一程序实体停止接收访问请求并更新所述第一程序实体,具体包括:控制所述第一程序实体停止接收访问请求,并在所述第一程序实体上的访问任务返回执行结果且在控制所述更新后的第二程序实体使用所述第二数据库对外提供业务服务之后,更新所述第一程序实体。4.根据权利要求1-3任一项所述的方法,其特征在于,所述禁用所述第二程序实体,随后更新所述第二程序实体,具体包括:控制所述第二程序实体停止接收访问请求,以禁用所述第二程序实体;在所述第二程序实体上的访问任务返回执行结果后,更新当前被禁用的第二程序实体。5.根据权利要求4所述的方法,其特征在于,所述控制所述第二程序实体停止接收访问请求,具体包括:配置所述第二程序实体中的请求接收器的工作状态为不使能disabled状态,以控制所述第二程序实体停止接收访问请求。6.根据权利要求1-3任一项所述的方法,其特征在于,所述控制更新后的第二程序实体接收访问请求并缓存所述访问请求,具体包括:配置所述更新后的第二程序实体中的请求接收器的工作状态为延缓请求hold模式,以控制所述更新后的第二程序实体接收访问请求并将所述访问请求进行缓存。7.根据权利要求6所述的方法,其特征在于,所述将所述访问请求进行缓存,具体包括:将所述访问请求缓存在所述更新后的第二程序实体的每个接收线程的堆栈中;或者,将所述访问请求缓存在所述更新后的第二程序实体的消息队列中;或者,将所述访问请求缓存在所述第一数据库中。8.根据权利要求1-3任一项所述的方法,其特征在于,所述控制所述第一程序实体停止接收访问请求,具体包括:配置所述第一程序实体中的请求接收器的工作状态为不使能disabled状态,以控制所述第一程序实体停止接收访问请求。9.根据权利要求1-3任一项所述的方法,其特征在于,所述兼容更新处理对应第一数据库操作集合,所述非兼容更新处理对应第二数据库操作集合;所述第一数据库操作集合至少包括:空操作、在所述数据库中增加新的数据库表的操作、在所述数据库中增加带有默认值的数据列的操作、在所述数据库中插入预设的数据行的操作;所述第二数据库操作集合至少包括:更改所述数据库中已有的数据库表或者数据库表中的列内容的操作、删除所述第一程序实体运行时所需的数据行的操作。10.根据权利要求1所述的方法,其特征在于,所述方法还包括:控制更新后的第一程序实体和更新后的第二程序实体采用所述第二数据库对外提供服务。11.一种服务端程序和数据库的升级装置,其特征在于,所述服务端程序包括第一程序实体和第二程序实体;所述装置包括:第一控制更新模块、第一数据库更新模块、缓存控制模块、第二控制更新模块和第二数据库更新模块;所述第一控制更新模块,用于禁用所述第二程序实体,随后更新所述第二程序实体;所述第一数据库更新模块,用于在所述第一控制更新模块更新所述第二程序实体之后,对当前对外提供服务的所述第一程序实体所使用的数据库进行兼容更新处理,获得第一数据库;所述缓存控制模块,用于控制更新后的第二程序...

【专利技术属性】
技术研发人员:王宏宇尤宏伟吕彪
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1