CN110825413A - 一种数据库升级方法和装置以及应用部署升级方法和装置 - Google Patents
一种数据库升级方法和装置以及应用部署升级方法和装置 Download PDFInfo
- Publication number
- CN110825413A CN110825413A CN201911065546.4A CN201911065546A CN110825413A CN 110825413 A CN110825413 A CN 110825413A CN 201911065546 A CN201911065546 A CN 201911065546A CN 110825413 A CN110825413 A CN 110825413A
- Authority
- CN
- China
- Prior art keywords
- database
- script
- list
- application
- upgrading
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
Abstract
本发明公开了一种数据库升级方法和装置以及应用部署升级方法和装置。该方法维持了一数据库脚本清单,该数据库脚本清单历史升级过程所执行过的数据脚本的清单,升级时,首先通过对数据库脚本清单中的数据脚本进行解析提取出数据库表形成数据库表清单,然后依据该数据库表清单进行备份,之后执行升级的数据库脚本,如果数据库脚本执行出错,则采用重置式恢复,使数据库回滚到执行升级的数据库脚本前的状态。由此,工作人员无需编辑数据库备份的脚本,也无需在数据库脚本考虑数据库事务的逻辑,也避免人工恢复作业,从而大大减少升级时的工作量。
Description
技术领域
本发明涉及数据库升级和应用部署升级的自动化。
背景技术
线上应用大都涉及数据库。线上应用升级时,相应地涉及数据库升级或变更。现有技术下,线上应用升级前,所涉及的数据库升级或变更会编辑成用于数据库升级的数据库脚本。线上应用升级时,通常需要人工工连接数据库系统,再执行用于数据库升级的数据库脚本。为避免线上应用升级出错的问题,线上应用升级时,需要对线上应用所涉及的数据库表内容进行备份。显而易见地,通过人工操作对线上应用所涉及变更的数据库表内容进行一个个备份是不现实的,因此,用于数据库升级的数据库脚本中直接加入了进行相关的数据库表内容备份的脚本。由此,在线上应用升级时,只需要考察用于数据库升级的数据库脚本执行的返回结果即可。数据库脚本执行失败后,通常依赖于数据库脚本的数据库事务进行处理。由于数据库事务的原子性,数据库脚本执行失败后,自然回滚至数据库脚本执行前的状态。但数据库事务不能代表全部,有些数据库操作并不能容纳在数据库事务中。此种情形下,数据库脚本执行失败后需要人工进行的回滚和恢复。虽然采用数据库脚本后很大程度上减少了人工的工作量,但是,人工操作的成分还很多,而且工作量不小,特别是用于数据库升级的数据库脚本执行出错的情况下,大都需要人工对数据库表内容检查,特别是由于线上应用升级多次的情况下,每个数据库脚本都是对前版本数据库的升级,由此,每个线上应用可能会涉及多个数据库脚本,这种情况下手工回滚和恢复的工作量就会很大。此外,将相关的数据库表内容备份的脚本和数据库事务写入用于数据库升级的数据库脚本中也增加了数据库脚本编辑时的工作量和负担。
发明内容
本发明所要解决的问题:线上应用升级时数据库升级存在的作业量大,特别是应用多次升级后的数据库脚本管理问题以及数据库脚本执行出错的情况下,数据库回滚和恢复的工作量。
为解决上述问题,本发明采用的方案如下:
根据本发明的一种数据库升级方法,包括以下步骤:
获取脚本名称、数据库升级所用的数据库脚本和数据库连接信息;
根据所述脚本名称找到相应的数据库脚本清单;
所述数据库脚本清单由具有先后顺序的数据库脚本所组成;
通过对所述数据库脚本清单中各数据库脚本进行解析提取出数据库表,得到数据库表清单;
根据所述数据库连接信息连接数据库系统;
对所述数据库表清单中各数据库表进行数据库表内容备份;
执行所述数据库升级所用的数据库脚本;
若所述数据库脚本执行成功,则将所述数据库升级所用的数据库脚本加入至所述数据库脚本清单并保存;
若所述数据库脚本执行失败,则执行重置式恢复;
所述重置式恢复包括以下步骤:
通过对所述数据库升级所用的数据库脚本进行解析提取出数据库表,并在数据库系统中删除相应的数据库表;
在数据库系统中删除所述数据库表清单中的数据库表;
按顺序依次执行数据库脚本清单中的各数据库脚本;
将所备份的数据库表内容导入各数据库表。
进一步,根据本发明的数据库升级方法,所述根据脚本名称找到相应的数据库脚本清单后,还包括对所述数据库脚本清单中各数据库脚本进行散列值验证的步骤。
根据本发明的一种数据库升级装置,包括以下模块:
升级脚本获取模块,用于:获取脚本名称、数据库升级所用的数据库脚本和数据库连接信息;
脚本清单查找模块,用于:根据所述脚本名称找到相应的数据库脚本清单;
所述数据库脚本清单由具有先后顺序的数据库脚本所组成;
数据库表提取模块,用于:通过对所述数据库脚本清单中各数据库脚本进行解析提取出数据库表,得到数据库表清单;
数据库连接模块,用于:根据所述数据库连接信息连接数据库系统;
表单内容备份模块,用于:对所述数据库表清单中各数据库表进行数据库表内容备份;
升级脚本执行模块,用于:执行所述数据库升级所用的数据库脚本;
脚本清单更新模块,用于:若所述数据库脚本执行成功,则将所述数据库升级所用的数据库脚本加入至所述数据库脚本清单并保存;
重置恢复回滚模块,用于:若所述数据库脚本执行失败,则执行重置式恢复;
所述重置恢复回滚模块包括以下模块:
升级脚本重置模块,用于:通过对所述数据库升级所用的数据库脚本进行解析提取出数据库表,并在数据库系统中删除相应的数据库表;
清单重置模块,用于:在数据库系统中删除所述数据库表清单中的数据库表;
清单执行模块,用于:按顺序依次执行数据库脚本清单中的各数据库脚本;
备份导入模块,用于:将所备份的数据库表内容导入各数据库表。
进一步,根据本发明的数据库升级装置,还包括散列值验证模块;所述散列值验证模块用于:所述根据脚本名称找到相应的数据库脚本清单后,对所述数据库脚本清单中各数据库脚本进行散列值验证的步骤。
根据本发明的一种应用部署升级方法,包括应用升级步骤;
所述应用升级步骤包括以下步骤:
S21:接收应用升级请求;
所述应用升级请求包括应用名称、应用程序包和数据库脚本;
S22:获取数据库连接信息,并根据所述应用名称找到相应的数据库脚本清单;
所述数据库脚本清单由具有先后顺序的数据库脚本所组成;
S23:通过对数据库脚本清单中各数据库脚本进行解析提取出数据库表,得到数据库表清单;
S24:根据所述数据库连接信息连接数据库系统;
S25:对所述数据库表清单中各数据库表进行数据库表内容备份;
S26:执行所述应用升级请求中的数据库脚本;
S27:若所述数据库脚本执行成功,则将所述应用升级请求中的数据库脚本加入至所述数据库脚本清单并保存;
S30:若所述数据库脚本执行失败,则执行重置式恢复;
所述步骤S30包括以下步骤:
S31:通过对所述数据库升级所用的数据库脚本进行解析提取出数据库表,并在数据库系统中删除相应的数据库表;
S32:在数据库系统中删除所述数据库表清单中的数据库表;
S33:按顺序依次执行数据库脚本清单中的各数据库脚本;
S34:将所备份的数据库表内容导入各数据库表。
进一步,根据本发明的应用部署升级方法,还包括应用部署步骤;
所述应用部署步骤包括以下步骤:
S11:接收应用部署请求;
所述应用部署请求至少包括应用名称、应用程序包、数据库连接信息和数据库脚本;
S12:根据所述数据库连接信息连接数据库系统;
S13:执行所述应用部署请求中的数据库脚本;
S14:若所述数据库脚本执行成功,则所述数据库脚本加入至数据库脚本清单;
S15:配发并部署所述应用程序包;
S16:所述应用名称、数据库连接信息和数据库脚本清单配对保存。
进一步,根据本发明的应用部署升级方法,所述步骤S22在所述根据脚本名称找到相应的数据库脚本清单后,还包括对所述数据库脚本清单中各数据库脚本进行散列值验证的步骤。
根据本发明的一种应用部署升级装置,包括应用升级模块;
所述应用升级模块包括以下模块:
M21,用于:接收应用升级请求;
所述应用升级请求包括应用名称、应用程序包和数据库脚本;
M22,用于:获取数据库连接信息,并根据所述应用名称找到相应的数据库脚本清单;
所述数据库脚本清单由具有先后顺序的数据库脚本所组成;
M23,用于:通过对数据库脚本清单中各数据库脚本进行解析提取出数据库表,得到数据库表清单;
M24,用于:根据所述数据库连接信息连接数据库系统;
M25,用于:对所述数据库表清单中各数据库表进行数据库表内容备份;
M26,用于:执行所述应用升级请求中的数据库脚本;
M27,用于:若所述数据库脚本执行成功,则将所述应用升级请求中的数据库脚本加入至所述数据库脚本清单并保存;
M30,用于:若所述数据库脚本执行失败,则执行重置式恢复;
所述模块M30包括以下模块:
M31,用于:通过对所述数据库升级所用的数据库脚本进行解析提取出数据库表,并在数据库系统中删除相应的数据库表;
M32,用于:在数据库系统中删除所述数据库表清单中的数据库表;
M33,用于:按顺序依次执行数据库脚本清单中的各数据库脚本;
M34,用于:将所备份的数据库表内容导入各数据库表。
进一步,根据本发明的应用部署升级装置,还包括应用部署模块;
所述应用部署模块包括以下模块:
M11,用于:接收应用部署请求;
所述应用部署请求至少包括应用名称、应用程序包、数据库连接信息和数据库脚本;
M12,用于:根据所述数据库连接信息连接数据库系统;
M13,用于:执行所述应用部署请求中的数据库脚本;
M14,用于:若所述数据库脚本执行成功,则所述数据库脚本加入至数据库脚本清单;
M15,用于:配发并部署所述应用程序包;
M16,用于:所述应用名称、数据库连接信息和数据库脚本清单配对保存。
进一步,根据本发明的应用部署升级装置,所述模块M22中,在所述根据脚本名称找到相应的数据库脚本清单后,对所述数据库脚本清单中各数据库脚本进行散列值验证的。
本发明的技术效果如下:本发明通过对各个数据库脚本的解析,维持应用的数据库表信息集合,结合所维持的数据库脚本清单,从而能够在执行数据库升级脚本前,自动完成数据库表内容的备份, 执行数据库升级脚本失败后,能够自动完成数据库的回滚恢复,由此,无需在数据库升级脚本中编写数据库备份的脚本和处理相关的数据库事务,也无需进行人工数据库备份和回滚恢复操作,大大减少了工作人员的工作量。
附图说明
图1是本发明实施例应用部署系统的整体结构示意图。
其中,901是应用部署服务系统,902是客户端,903是线上应用服务系统, 904是数据库系统。
具体实施方式
下面结合附图对本发明做进一步详细说明。
本实施例涉及一种应用部署系统。如图1所示,该系统包括应用部署服务系统901、客户端902、线上应用服务系统903和数据库系统904。应用部署服务系统901用于线上应用的管理,线上应用服务系统903是线上应用执行平台。应用部署服务系统901、线上应用服务系统903和数据库系统904部署在服务器上,可以部署在同一台服务器上,也可以部署在不同的服务器上,或者也可以部署在服务器集群中。为简单起见,本发明所指的应用均为线上应用。本发明所指的数据库升级装置和应用部署升级装置是应用部署服务系统901中的模块,数据库升级方法和应用部署升级方法是应用部署服务系统901所处理的步骤。在应用部署时,客户端902向应用部署服务系统901发送应用部署请求;在应用升级时,客户端902向应用部署服务系统901发送应用升级请求。应用部署服务系统901接收到应用部署请求或应用升级请求后所处理的过程即为本发明所指应用部署升级方法。因此,应用部署升级方法涉及两个步骤:应用部署步骤和应用升级步骤。应用部署步骤是对前述应用部署请求作出的响应处理过程;应用升级步骤是对前述应用升级请求作出的响应处理过程。
应用部署步骤具体为:
S11:接收应用部署请求;
S12:根据数据库连接信息连接数据库系统;
S13:执行应用部署请求中的数据库脚本;
S14:若数据库脚本执行成功,则数据库脚本加入至数据库脚本清单;
S15:配发并部署应用程序包;
S16:应用名称、数据库连接信息和数据库脚本清单配对保存。
上述步骤中,应用部署请求包括应用名称、应用版本号、应用程序包、数据库连接信息和数据库脚本等信息。数据库连接信息用于连接数据库系统,具体到本实施例中,数据库连接信息是应用部署服务系统901连接数据库系统904所需要的信息,包括数据库系统的服务器地址以及登录数据库系统的用户名和密码等信息。
步骤S15的配发并部署应用程序包,本实施例中,即将应用程序包发送至线上应用服务系统903。线上应用服务系统903如何处理根据实际需要设定,也不是本发明所讨论的范畴,本说明书无需赘述。
步骤S16中,本实施例将应用名称、数据库连接信息和数据库脚本清单组成应用数据库信息,然后将应用数据库信息存入应用数据库信息库。应用数据库信息库可以是文件方式,也可以是数据库方式。应用数据库信息保存后在应用升级请求步骤中可以通过应用名称查找相应的应用数据库信息,从而得到相应的数据库连接信息和数据库脚本清单。由此,在应用数据库信息库中,应用名称是唯一的关键词,不能重复。需要指出的是,在本发明所指的数据库升级方法和装置中,应用名称也即为脚本名称,相应地,应用版本号,也即为脚本版本号。
上述步骤中,数据库脚本清单由具有先后顺序的数据库脚本所组成。本实施例中,数据库脚本清单,本实施例中,是由用于表示数据库脚本的脚本项信息组成的数组,每个脚本项信息对应一个数据库脚本。脚本项信息包括数据库脚本索引、加入数据库脚本清单的时间、数据库脚本的散列值。数据库脚本索引用于表示数据库脚本所存储的位置。本实施例中,数据库脚本通过文件方式保存,因此数据库脚本索引为文件名。本领域技术人员理解,数据库脚本也可以存入数据库,此时,数据库脚本索引为数据库脚本存入数据库时关键词。数据库脚本的散列值是对数据库脚本通过散列函数运算得到的值,该值通常也被称为杂凑值或哈希值或信息摘要。数据库脚本的散列值的计算可以采用SHA3或MD5等算法。
需要指出的是,应用部署步骤所得到的数据库脚本清单仅包含一个数据库脚本。在后续的应用升级步骤中,数据库脚本清单中的数据库脚本将逐渐增加。由此,数据库脚本清单中的各数据库脚本按顺序组合成后是当前应用所使用的完整的数据库脚本,数据库脚本清单中的每个数据库脚本是该完整的数据库脚本的一个片段。
应用升级步骤具体为:
S21:接收应用升级请求;
S22:获取数据库连接信息,并根据应用名称找到相应的数据库脚本清单;
S23:通过对数据库脚本清单中各数据库脚本进行解析提取出数据库表;
S24:根据数据库连接信息连接数据库系统;
S25:对数据库表清单中各数据库表进行数据库表内容备份;
S26:执行应用升级请求中的数据库脚本;
S27:若数据库脚本执行成功,则将数据库脚本加入至数据库脚本清单并保存;
S30:若数据库脚本执行失败,则执行重置式恢复。
应用升级请求包括应用名称、应用版本号、应用程序包和数据库脚本。不同于应用部署请求,本实施例中,应用升级请求不包含数据库连接信息。如前,应用名称、数据库连接信息和数据库脚本清单配对保存在应用数据库信息库中,因此根据应用名称即可找到相应的数据库连接信息,因此应用升级请求可以不包含数据库连接信息。本领域技术人员理解,应用升级请求也可以包含数据库连接信息,此时步骤S22所获取的数据库连接信息来自于应用升级请求,并且,此时前述步骤S16中无需保存数据库连接信息。
此外,本实施例中,数据库脚本清单是由用于表示数据库脚本的脚本项信息组成的数组,脚本项信息包括数据库脚本索引、加入数据库脚本清单的时间、数据库脚本的散列值。因此,优选地,还可以对数据库脚本清单做一致性验证。对数据库脚本清单做一致性验证包括两个方面:第一个方面是检查脚本项信息中的加入数据库脚本清单的时间,判断各个脚本项信息的加入数据库脚本清单的时间是否按时间顺序排序;第二个方面是对各数据库脚本进行散列值验证。对各数据库脚本进行散列值验证,具体来说,根据数据库脚本索引找到数据库脚本并计算其散列值,然后将该计算得到的散列值与脚本项信息中的数据库脚本的散列值比较,如果两者不一致,则说明数据库脚本索引所指向的数据库脚本被修改过。如果各个脚本项信息的加入数据库脚本清单的时间未按时间顺序排序,则应用部署服务系统901向客户端902返回原有数据库脚本一致性存在错误的问题。如果数据库脚本索引所指向的数据库脚本被修改过,则应用部署服务系统901向客户端902返回原有数据库脚本被篡改的信息。
步骤S23的输出是数据库表清单。本实施例,数据库系统904采用mySQL,相应的数据库脚本基于SQL,数据库表则位于具有特定数据库名称的数据库中。因此,数据库表清单中的数据库表包含两项信息:数据库表的名称和数据库表所在数据库的名称。在本实施例基于SQL的数据库脚本中,数据库的名称通过在数据库脚本中搜索“Create Database”、“Drop Database”、“USE”等关键词得到,并由此确定当前数据库表所在的数据库;数据库表的名称则通过在数据库脚本中搜索“Create Table”和“Drop Table”等关键词得到。因此步骤S23对本领域技术人员俩说并不难实现,本说明书不再赘述。需要注意的是,“DropDatabase”所对应的数据库是临时数据库,“Drop Table”所对应的数据库表是临时数据库表。步骤S23的目的是搜索出当前应用正在使用中的数据库表,而临时数据库中的数据库表和临时数据库表仅在数据库脚本中使用,不为应用所使用,因此步骤S23中,本领域技术人员理解,应当剔除相应的临时数据库和临时数据库表。
步骤S25中,本实施例所采用的方法是通过生成备份数据库脚本实现。具体来说,通过SELECT * INTO table_backup FROM table_name形式的SQL语句实现。其中,table_backup是数据库表内容备份后的数据库表的名称,table_name是被备份的数据库表的名称。需要指出的是,备份数据库脚本需要整体作为数据库事务进行处理。
步骤S30是重置恢复回滚步骤,具体包括如下步骤:
S31:通过对数据库升级所用的数据库脚本进行解析提取出数据库表,并在数据库系统中删除相应的数据库表;
S32:在数据库系统中删除数据库表清单中的数据库表;
S33:按顺序依次执行数据库脚本清单中的各数据库脚本;
S34:将所备份的数据库表内容导入各数据库表。
步骤S31和S32的目的是删除掉由各数据库脚本执行所生成的表单。步骤S31所删除的数据库表是由当前所执行的数据库脚本所创建的数据库表。步骤S32是删除的原有的数据库表。原有数据库脚本执行所创建的视图、索引等由于依赖于数据库表,因此,经步骤S31、步骤S32删除掉数据库表后,相应的视图、索引都被删除,也就是相当于数据库重置。然后在步骤S33中执行书库脚本后,相当于对应用各数据库表的初始化。
步骤S34中,本实施例所采用的方法是通过生成导入数据库脚本实现。具体来说,通过INSERT INTO table_name SELECT * FROM table_backup形式的SQL语句实现。需要指出的是,导入数据库脚本需要整体作为数据库事务进行处理。
上述应用升级步骤,若仅考虑数据库处理部分,即为本发明所指的数据库升级方法:
获取脚本名称、数据库升级所用的数据库脚本和数据库连接信息;
根据脚本名称找到相应的数据库脚本清单;
通过对数据库脚本清单中各数据库脚本进行解析提取出数据库表,得到数据库表清单;
根据数据库连接信息连接数据库系统;
对数据库表清单中各数据库表进行数据库表内容备份;
执行数据库升级所用的数据库脚本;
若数据库脚本执行成功,则将数据库升级所用的数据库脚本加入至数据库脚本清单并保存;
若数据库脚本执行失败,则执行重置式恢复;
重置式恢复包括以下步骤:
通过对数据库升级所用的数据库脚本进行解析提取出数据库表,并在数据库系统中删除相应的数据库表;
在数据库系统中删除数据库表清单中的数据库表;
按顺序依次执行数据库脚本清单中的各数据库脚本;
将所备份的数据库表内容导入各数据库表。
上述步骤中,脚本名称即为前述的应用名称,数据库升级所用的数据库脚本,即为应用升级请求中的数据库脚本,其他步骤与前述应用升级步骤相同,不再赘述。
Claims (10)
1.一种数据库升级方法,其特征在于,包括以下步骤:
获取脚本名称、数据库升级所用的数据库脚本和数据库连接信息;
根据所述脚本名称找到相应的数据库脚本清单;
所述数据库脚本清单由具有先后顺序的数据库脚本所组成;
通过对所述数据库脚本清单中各数据库脚本进行解析提取出数据库表,得到数据库表清单;
根据所述数据库连接信息连接数据库系统;
对所述数据库表清单中各数据库表进行数据库表内容备份;
执行所述数据库升级所用的数据库脚本;
若所述数据库脚本执行成功,则将所述数据库升级所用的数据库脚本加入至所述数据库脚本清单并保存;
若所述数据库脚本执行失败,则执行重置式恢复;
所述重置式恢复包括以下步骤:
通过对所述数据库升级所用的数据库脚本进行解析提取出数据库表,并在数据库系统中删除相应的数据库表;
在数据库系统中删除所述数据库表清单中的数据库表;
按顺序依次执行数据库脚本清单中的各数据库脚本;
将所备份的数据库表内容导入各数据库表。
2.如权利要求1所述的数据库升级方法,其特征在于,所述根据脚本名称找到相应的数据库脚本清单后,还包括对所述数据库脚本清单中各数据库脚本进行散列值验证的步骤。
3.一种数据库升级装置,其特征在于,包括以下模块:
升级脚本获取模块,用于:获取脚本名称、数据库升级所用的数据库脚本和数据库连接信息;
脚本清单查找模块,用于:根据所述脚本名称找到相应的数据库脚本清单;
所述数据库脚本清单由具有先后顺序的数据库脚本所组成;
数据库表提取模块,用于:通过对所述数据库脚本清单中各数据库脚本进行解析提取出数据库表,得到数据库表清单;
数据库连接模块,用于:根据所述数据库连接信息连接数据库系统;
表单内容备份模块,用于:对所述数据库表清单中各数据库表进行数据库表内容备份;
升级脚本执行模块,用于:执行所述数据库升级所用的数据库脚本;
脚本清单更新模块,用于:若所述数据库脚本执行成功,则将所述数据库升级所用的数据库脚本加入至所述数据库脚本清单并保存;
重置恢复回滚模块,用于:若所述数据库脚本执行失败,则执行重置式恢复;
所述重置恢复回滚模块包括以下模块:
升级脚本重置模块,用于:通过对所述数据库升级所用的数据库脚本进行解析提取出数据库表,并在数据库系统中删除相应的数据库表;
清单重置模块,用于:在数据库系统中删除所述数据库表清单中的数据库表;
清单执行模块,用于:按顺序依次执行数据库脚本清单中的各数据库脚本;
备份导入模块,用于:将所备份的数据库表内容导入各数据库表。
4.如权利要求3所述的数据库升级装置,其特征在于,还包括散列值验证模块;所述散列值验证模块用于:所述根据脚本名称找到相应的数据库脚本清单后,对所述数据库脚本清单中各数据库脚本进行散列值验证的步骤。
5.一种应用部署升级方法,其特征在于,包括应用升级步骤;
所述应用升级步骤包括以下步骤:
S21:接收应用升级请求;
所述应用升级请求包括应用名称、应用程序包和数据库脚本;
S22:获取数据库连接信息,并根据所述应用名称找到相应的数据库脚本清单;
所述数据库脚本清单由具有先后顺序的数据库脚本所组成;
S23:通过对数据库脚本清单中各数据库脚本进行解析提取出数据库表,得到数据库表清单;
S24:根据所述数据库连接信息连接数据库系统;
S25:对所述数据库表清单中各数据库表进行数据库表内容备份;
S26:执行所述应用升级请求中的数据库脚本;
S27:若所述数据库脚本执行成功,则将所述应用升级请求中的数据库脚本加入至所述数据库脚本清单并保存;
S30:若所述数据库脚本执行失败,则执行重置式恢复;
所述步骤S30包括以下步骤:
S31:通过对所述数据库升级所用的数据库脚本进行解析提取出数据库表,并在数据库系统中删除相应的数据库表;
S32:在数据库系统中删除所述数据库表清单中的数据库表;
S33:按顺序依次执行数据库脚本清单中的各数据库脚本;
S34:将所备份的数据库表内容导入各数据库表。
6.如权利要求5所述的应用部署升级方法,其特征在于,还包括应用部署步骤;
所述应用部署步骤包括以下步骤:
S11:接收应用部署请求;
所述应用部署请求至少包括应用名称、应用程序包、数据库连接信息和数据库脚本;
S12:根据所述数据库连接信息连接数据库系统;
S13:执行所述应用部署请求中的数据库脚本;
S14:若所述数据库脚本执行成功,则所述数据库脚本加入至数据库脚本清单;
S15:配发并部署所述应用程序包;
S16:所述应用名称、数据库连接信息和数据库脚本清单配对保存。
7.如权利要求5或6所述的应用部署升级方法,其特征在于,所述步骤S22在所述根据脚本名称找到相应的数据库脚本清单后,还包括对所述数据库脚本清单中各数据库脚本进行散列值验证的步骤。
8.一种应用部署升级装置,其特征在于,包括应用升级模块;
所述应用升级模块包括以下模块:
M21,用于:接收应用升级请求;
所述应用升级请求包括应用名称、应用程序包和数据库脚本;
M22,用于:获取数据库连接信息,并根据所述应用名称找到相应的数据库脚本清单;
所述数据库脚本清单由具有先后顺序的数据库脚本所组成;
M23,用于:通过对数据库脚本清单中各数据库脚本进行解析提取出数据库表,得到数据库表清单;
M24,用于:根据所述数据库连接信息连接数据库系统;
M25,用于:对所述数据库表清单中各数据库表进行数据库表内容备份;
M26,用于:执行所述应用升级请求中的数据库脚本;
M27,用于:若所述数据库脚本执行成功,则将所述应用升级请求中的数据库脚本加入至所述数据库脚本清单并保存;
M30,用于:若所述数据库脚本执行失败,则执行重置式恢复;
所述模块M30包括以下模块:
M31,用于:通过对所述数据库升级所用的数据库脚本进行解析提取出数据库表,并在数据库系统中删除相应的数据库表;
M32,用于:在数据库系统中删除所述数据库表清单中的数据库表;
M33,用于:按顺序依次执行数据库脚本清单中的各数据库脚本;
M34,用于:将所备份的数据库表内容导入各数据库表。
9.如权利要求8所述的应用部署升级装置,其特征在于,还包括应用部署模块;
所述应用部署模块包括以下模块:
M11,用于:接收应用部署请求;
所述应用部署请求至少包括应用名称、应用程序包、数据库连接信息和数据库脚本;
M12,用于:根据所述数据库连接信息连接数据库系统;
M13,用于:执行所述应用部署请求中的数据库脚本;
M14,用于:若所述数据库脚本执行成功,则所述数据库脚本加入至数据库脚本清单;
M15,用于:配发并部署所述应用程序包;
M16,用于:所述应用名称、数据库连接信息和数据库脚本清单配对保存。
10.如权利要求8或9所述的应用部署升级装置,其特征在于,所述模块M22中,在所述根据脚本名称找到相应的数据库脚本清单后,对所述数据库脚本清单中各数据库脚本进行散列值验证的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911065546.4A CN110825413A (zh) | 2019-11-04 | 2019-11-04 | 一种数据库升级方法和装置以及应用部署升级方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911065546.4A CN110825413A (zh) | 2019-11-04 | 2019-11-04 | 一种数据库升级方法和装置以及应用部署升级方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110825413A true CN110825413A (zh) | 2020-02-21 |
Family
ID=69552509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911065546.4A Withdrawn CN110825413A (zh) | 2019-11-04 | 2019-11-04 | 一种数据库升级方法和装置以及应用部署升级方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110825413A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708792A (zh) * | 2020-06-16 | 2020-09-25 | 东莞中国科学院云计算产业技术创新与育成中心 | 云平台数据库升级方法、装置、计算机设备和存储介质 |
CN113268470A (zh) * | 2021-06-17 | 2021-08-17 | 重庆富民银行股份有限公司 | 一种高效的数据库回滚方案验证方法 |
WO2021254104A1 (zh) * | 2020-06-15 | 2021-12-23 | 华为技术有限公司 | 数据库设计方法、装置及相关设备 |
CN115687292A (zh) * | 2022-08-03 | 2023-02-03 | 杭州新中大科技股份有限公司 | 一种可验证的与数据库技术无关的数据库升级方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493842A (zh) * | 2009-02-20 | 2009-07-29 | 中兴通讯股份有限公司 | Oracle数据库中大批量删除数据的方法 |
CN102402559A (zh) * | 2010-09-16 | 2012-04-04 | 中兴通讯股份有限公司 | 一种数据库升级脚本的生成方法和装置 |
CN102662694A (zh) * | 2012-03-22 | 2012-09-12 | 福建星网视易信息系统有限公司 | 数据库脚本的批处理升级方法及升级器 |
CN104102511A (zh) * | 2014-07-17 | 2014-10-15 | 福建星海通信科技有限公司 | 一种基于SQL Server的脚本自动升级系统及方法 |
CN104360878A (zh) * | 2014-10-29 | 2015-02-18 | 中国建设银行股份有限公司 | 一种应用软件部署的方法及装置 |
US20160321056A1 (en) * | 2015-05-02 | 2016-11-03 | Kcura Llc | Methods and apparatus for upgrading a plurality of databases |
CN107092557A (zh) * | 2017-03-24 | 2017-08-25 | 广东网金控股股份有限公司 | 一种数据库架构升级脚本验证方法和装置 |
-
2019
- 2019-11-04 CN CN201911065546.4A patent/CN110825413A/zh not_active Withdrawn
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493842A (zh) * | 2009-02-20 | 2009-07-29 | 中兴通讯股份有限公司 | Oracle数据库中大批量删除数据的方法 |
CN102402559A (zh) * | 2010-09-16 | 2012-04-04 | 中兴通讯股份有限公司 | 一种数据库升级脚本的生成方法和装置 |
CN102662694A (zh) * | 2012-03-22 | 2012-09-12 | 福建星网视易信息系统有限公司 | 数据库脚本的批处理升级方法及升级器 |
CN104102511A (zh) * | 2014-07-17 | 2014-10-15 | 福建星海通信科技有限公司 | 一种基于SQL Server的脚本自动升级系统及方法 |
CN104360878A (zh) * | 2014-10-29 | 2015-02-18 | 中国建设银行股份有限公司 | 一种应用软件部署的方法及装置 |
US20160321056A1 (en) * | 2015-05-02 | 2016-11-03 | Kcura Llc | Methods and apparatus for upgrading a plurality of databases |
CN107092557A (zh) * | 2017-03-24 | 2017-08-25 | 广东网金控股股份有限公司 | 一种数据库架构升级脚本验证方法和装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021254104A1 (zh) * | 2020-06-15 | 2021-12-23 | 华为技术有限公司 | 数据库设计方法、装置及相关设备 |
CN111708792A (zh) * | 2020-06-16 | 2020-09-25 | 东莞中国科学院云计算产业技术创新与育成中心 | 云平台数据库升级方法、装置、计算机设备和存储介质 |
CN113268470A (zh) * | 2021-06-17 | 2021-08-17 | 重庆富民银行股份有限公司 | 一种高效的数据库回滚方案验证方法 |
CN115687292A (zh) * | 2022-08-03 | 2023-02-03 | 杭州新中大科技股份有限公司 | 一种可验证的与数据库技术无关的数据库升级方法 |
CN115687292B (zh) * | 2022-08-03 | 2023-06-23 | 杭州新中大科技股份有限公司 | 一种可验证的与数据库技术无关的数据库升级方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110825413A (zh) | 一种数据库升级方法和装置以及应用部署升级方法和装置 | |
US11561956B2 (en) | Key pattern management in multi-tenancy database systems | |
CN107562513B (zh) | 一种基于java的智能合约生命周期的管理方法 | |
US9218377B2 (en) | Failure recovery and error correction techniques for data loading in information warehouses | |
US7933869B2 (en) | Method and system for cloning a tenant database in a multi-tenant system | |
US8112396B2 (en) | Backup and recovery of integrated linked databases | |
US20050234934A1 (en) | System and method for controlling the release of updates to a database configuration | |
CN108279922A (zh) | 差分文件生成方法、基于该差分文件的升级方法及系统 | |
US20080162587A1 (en) | Server synchronization for maintenance activities | |
CN112130891B (zh) | 一种数据库持续部署的方法和设备 | |
US11733999B2 (en) | Versioning and cataloging application programming interface (API) specifications | |
US11875178B2 (en) | Using multiple blockchains for applying transactions to a set of persistent data objects in persistent storage systems | |
JP2017091531A (ja) | ソースコード管理(scm)システムから製品ライフサイクル管理(plm)システムへの階層的なデータのエクスポート | |
US20210124575A1 (en) | Providing build avoidance without requiring local source code | |
KR101071484B1 (ko) | 데이터베이스의 논리적 데이터 오류 복구방법 | |
CN109918100A (zh) | 一种面向版本缺陷的基于修复模式的修复推荐方法 | |
JP5109676B2 (ja) | データ整合性を確保するためのプログラム、方法及びコンピュータ・システム | |
CN115168347A (zh) | 一种多数据库间快速同步及异常回滚合并数据的方法 | |
CN112817931B (zh) | 一种增量版本文件的生成方法及装置 | |
CN114625751A (zh) | 基于区块链的数据溯源查询方法及装置 | |
JP2017091532A (ja) | 製品ライフサイクル管理(plm)システムからソースコード管理(scm)システムへの階層的なデータのエクスポート | |
US20240126785A1 (en) | Failover of database sessions to a logical replica database | |
US20230251939A1 (en) | Systems and methods for defining, capturing, and extracting data from data repositories to specification | |
CN111597165B (zh) | 一种数据库管理方法、终端及存储介质 | |
CN117348915B (zh) | 一种内核代码自动同步方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200221 |