一种基于服务升级时自动升级数据库的实现方法技术

技术编号:31481233 阅读:20 留言:0更新日期:2021-12-18 12:15
本发明专利技术公开了一种基于服务升级时自动升级数据库的实现方法,首先在Jenkins中完成服务器的初始化部署工作,设置服务器组件及服务器配置,在初始化部署服务器docker容器以及jdk环境时,添加一个shell脚本;shell脚本用于执行以下方法:当服务启动时,首先判断是否是初始化服务;如果是初始化服务,则进行数据库初始化,服务器获取到升级状况,并返回响应;否则,判断当前时间是否在预更新日期之后,若是,则对数据库进行升级,否则跳过升级。通过将一个shell脚本,嵌入在整个服务的构建和升级架构中,从而实现服务升级的同时数据库升级也同步完成。步完成。步完成。

【技术实现步骤摘要】
一种基于服务升级时自动升级数据库的实现方法


[0001]本专利技术属于数据库领域,具体涉及一种基于服务升级时自动升级数据库的实现方法。

技术介绍

[0002]现在互联网应用需要经常更新数据库,以满足各种应用的需求。大多数数据库在每次升级时,都需要上线手动更新数据库数据,然后将更新后的内容保存到本地或云端。
[0003]随着软件的使用,随着用户对软件的熟悉和业务过程的理解,以及用户业务流程发生的新变化,软件往往需要进行各种维护和升级以满足用户不断发展的需要。在企业或个人对自己的项目服务进行构造升级时,必不可少地,需要对该服务所对应的数据库进行数据的修改、表结构的调整以及数据库的重构,倘若让程序员自身手动进行操作,一旦数据库的数量庞大,那么对于程序员的工作量必定是巨大的,而对于整个工程的进度也是影响巨大的,在进行数据库结构升级时,受时间和空间的限制,开发人员不可能时时刻刻去操作可视化的数据库管理工具,而需要写代码来实现数据库结构的修改。目前服务升级时数据库升级部署较为繁琐。
[0004]CN109284297A《一种数据库智能更新方法及系统》中提出了一种数据库智能更新方法,包括如下步骤:启动程序,检测数据库表结构是否有更新;如果数据库表结构没有更新,则自动更新数据库表结构,将修改的表结构转换成sql语句并保存;如果数据库表结构有更新,则自动将当前的表结构转换成sql语句并保存。但是仅仅更新表结构,并且只提供了更新功能,当服务器初始化时,没有提供数据库初始化的功能。

技术实现思路

[0005]针对上述技术问题,为了简化数据库层操作,优化用户体验,以及开发人员更方便的集成服务模块,本专利技术提出一种基于服务升级时自动升级数据库的实现方法。其中服务升级指的是在Jenkins中进行服务器部署、初始化以及升级,自动升级则指的是自动检测数据库,并进行初始化或者更新。
[0006]为达到上述目的,本专利技术采用的技术方案为:一种基于服务升级时自动升级数据库的实现方法,首先在Jenkins中完成服务器的初始化部署工作,设置服务器组件及服务器配置,在初始化部署服务器docker容器以及jdk环境时,添加一个shell脚本;shell 脚本用于执行以下方法:
[0007]当服务启动时,首先判断是否是初始化服务;如果是初始化服务,则进行数据库初始化,服务器获取到升级状况,并返回响应;否则,判断当前时间是否在预更新日期之后,若是,则对数据库进行升级,否则跳过升级。
[0008]进一步的,更具体的方法为:shell脚本根据Jenkins传递的参数进行判断,若参数为初始化,就连接数据库,执行完成登录后进入数据库内部,运行预设的初始化数据库文件,表数据以及表数据相关sql文件,完成对数据库管理系统的数据库的初始化,并且设置
为第一个版本;
[0009]若参数为升级,进入数据库内部,识别上一次记录的数据库版本号,与需要升级的目标数据库文件的版本号进行比较;若用于升级的文件版本低于目标版本,则退出脚本;若确认用于升级的文件为新的版本后,连接数据库,执行完成登录后进入数据库内部,运行表数据以及表数据相关sql文件。
[0010]进一步的,文件命名以日期或者版本号结尾,以便后续脚本对数据库更新版本的判断。通过截取到上一次升级后的当前版本号(以日期结尾的命名的升级文件中获取参数),与目标版本号进行比较,从而判断是否进行升级操作。通过这种方式,可以很好的管理服务数据库各个版本,保证升级的最新版本与升级的服务之间同步、兼容,防止出现数据重复遗漏等。
[0011]本专利技术具有以下有益效果:
[0012]1、通过将一个shell脚本,嵌入在整个服务的构建和升级架构中,从而实现服务升级的同时数据库升级也同步完成。本专利技术提供的方法能够自动读取服务数据库的版本号,判断是否有可用的数据库更新脚本,并自动进行更新操作,从而不会发生数据库重复更新导致的数据重复以及数据库版本更新遗漏的问题。
[0013]2、本案提供的方法能够简化数据库层的操作,从而减轻开发人员的负担,大大缩短开发周期。当服务需要进行升级,涉及到对数据库某些表要进行修改时,只需要提供升级所需的数据库文件,并不需要人为进入数据库进行操作,通过脚本自动进入目标数据库,对数据进行修改,从而完成升级过程,优点在于,减少了人为进入底层数据库,减少了对数据库的直接操作,防止误操作,也减少了开发人员的负担。
[0014]3、本专利技术的技术方案支持在服务初始化阶段,也能够对数据库进行初始化。
附图说明
[0015]图1为本专利技术实施例的基于服务升级时自动升级数据库原理流程图。
[0016]图2为本专利技术实施例的基于服务升级时自动升级数据库的实现方法流程图。
具体实施方式
[0017]为了便于本领域技术人员的理解,下面结合实施例与附图对本专利技术作进一步的说明。
[0018]本实施例的基于服务升级时自动升级数据库的实现方法,服务升级时,数据库升级的过程如图1所示。
[0019]本案中的自动升级数据库的方法,通过在初始化部署服务器docker容器以及jdk环境时,添加一个xshell脚本,来完成对服务器数据库的自动初始化,以及自动检测数据库的更新。本案中提到的数据库指主流数据库,包含但不限于MySQL以及mongodb,本案通过以MySQL以及mongodb为例描述自动升级数据库的实现方法。
[0020]相较于目前现有的技术方案,本方案在此基础上,在服务刚进行部署,进行初始化阶段增加对数据库的同步部署初始化,省去了人为干预初始化数据库数据的麻烦,只要在刚开始选择阶段,在Jenkins选择初始化选项,本方案就通过运行你想要作为$1版本的初始化数据库文件,在你的数据库中,进行初始化,如MySQL:
[0021]通过将从Jenkins中传进来的参数做判断,为“init”即初始化,为“upgrade”即升级。进入脚本(#!/bin/sh),该脚本进行判断,如果选择初始化(if[[$type='init']];),将会尝试连接数据库,进入该服务器所在数据库安装地址下的bin目录(如进入预设 MySQL安装地址cd/data/mysql/mysql8/bin/),执行完成登录后进入数据库内部,进行对将要用来初始化的sql或者js文件运行,完成对该服务对应的MySQL数据库的初始化,并且设置为第一个版本。
[0022]如果选择升级,进入该服务器所在数据库安装地址下的bin目录,识别上一次记录的数据库版本,若用于升级的文件版本低于目标版本,则退出脚本,确认为新的版本后 (if[$a

gt$num];),尝试连接数据库,执行完成登录后进入数据库内部,执行新版本的sql或者js文件。通过这种方式,可以很好的管理你的服务数据库各个版本,保证升级的最新版本与升级的服务之间同步、兼容,防止出现数据重复遗漏等。
[0023]当服务需要进行升级,涉及到对数据库某些表要进行修改时,只需要提供升级所需的数据本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于服务升级时自动升级数据库的实现方法,其特征在于:首先在Jenkins中完成服务器的初始化部署工作,设置服务器组件及服务器配置,在初始化部署服务器docker容器以及jdk环境时,添加一个shell脚本;shell脚本用于执行以下方法:当服务启动时,首先判断是否是初始化服务;如果是初始化服务,则进行数据库初始化,服务器获取到升级状况,并返回响应;否则,判断当前时间是否在预更新日期之后,若是,则对数据库进行升级,否则跳过升级。2.根据权利要求1所述的基于服务升级时自动升级数据库的实现方法,其特征在于,具体的方法为:shell脚本根据Jenkins传递的参数进行判断,若参数为初始化,就连接数据库,执行完成登录后进入...

【专利技术属性】
技术研发人员:王浩炘李德阳孔祥俊
申请(专利权)人:南京壹证通信息科技有限公司
类型:发明
国别省市:

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

1