数据库实例的下线方法、装置、终端及存储介质与流程

文档序号:15272210发布日期:2018-08-28 22:34阅读:464来源:国知局

本发明实施例涉及计算机应用技术领域,尤其涉及一种数据库实例的下线方法、装置、终端及存储介质。



背景技术:

mysql数据库由于其拥有很好的可扩展性使其逐渐成为各种业务模型选择的数据存储介质被广泛应用。然而,随着业务量、数据量的不断攀升,数据库服务器相关的硬件量也快速增长,现有方案对mysql数据库的控制和维护主要依赖于人力干预。

现有的成熟的mysql下线方案,基本上都是人工一步一步的检查。流程化标准的公司,是通过写一套规范的下线流程,然后由工作人员去服务器上按照流程一步一步的检查执行,直至到数据库实例停止。

但是,数据库实例下线对于数据库管理员(databaseadministrator,简称dba)来说,是一套如履薄冰的操作,整个人工的步骤如果错误一步,都可能对线上环境造成毁灭性的灾难,人工操作的复杂度较高,加上整个过程持续的时间较长,在工作繁忙的情况下出现误操作的概率也会增加,导致出错率高、成本高、效率低。



技术实现要素:

本发明实施例提供了一种数据库实例的下线方法装置、终端及存储介质,以解决现有人工下线方法操作繁琐、耗时耗力且易出错等技术问题,实现数据库实例的高效率、高准确度地自动下线。

第一方面,本发明实施例提供了一种数据库实例的下线方法,该方法包括:

当接收到至少一个数据库实例的下线请求时,向预先存储有下线脚本的服务器发送携带有目标网际协议地址的脚本调用请求;

接收文件传送函数所发送的与所述脚本调用请求对应的下线脚本,并执行所述下线脚本将与所述下线请求对应得所述至少一个数据库实例进行下线。

进一步地,所述执行所述下线脚本将于所述下线请求对应得所述至少一个数据库实例进行下线,包括:

当所述下线脚本判断出至少一个数据库实例满足下线条件时,对所述至少一个数据库实例执行所述下线脚本中的下线操作。

进一步地,所述下线脚本判断出至少一个数据库实例满足下线条件,包括:

若所述下线脚本检测到至少一个所述数据库实例处于运行状态,且在预设休眠时间内未检测到用户访问,则判断出至少一个数据库实例满足下线条件。

进一步地,所述对所述至少一个数据库实例执行下线操作,包括:

停止所述至少一个数据库实例的服务进程,并清空存储在数据库中与所述数据库实例对应的数据文件和安装目录。

进一步地,所述的方法还包括:

通过日志输出函数将与所述至少一个数据库实例对应的下线执行信息记录在第一日志中。

进一步地,所述的方法还包括:

将所述至少一个数据库实例进行备份生成备份文件,通过所述文件传输函数将所述备份文件传送函数发送给存储服务器。

进一步地,所述通过所述文件传输函数将所述备份文件传送函数发送给存储服务器,包括:

所述文件传输函数根据saltstack管理工具的minion的主机名hostname,找到与存储服务器对应的网际协议地址,然后使用salt接口将备份文件传送给存储服务器。

第二方面,本发明实施例提供了一种数据库实例的下线装置,该装置包括:

请求发送模块,用于当接收到至少一个数据库实例的下线请求时,向预先存储有下线脚本的服务器发送携带有目标网际协议地址的脚本调用请求;

下线执行模块,用于接收文件传送函数所发送的与所述脚本调用请求对应的下线脚本,并执行所述下线脚本将与所述下线请求对应得所述至少一个数据库实例进行下线。

第三方面,本发明实施例还提供了一种终端,所述终端包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的数据库实例的下线方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-7中任一所述的数据库实例的下线方法。

本发明实施例的技术方案,首先将下线脚本存储在公用的服务器上,可以在不影响目标服务器运行的同时,实现下线脚本的共享;进而在接收到至少一个数据库实例的下线请求时,发送脚本调用请求并接收文件传送函数所发送的下线脚本,实现下线脚本的传输,然后在本地端执行所述下线脚本将完成岁数据库实例的下线,能够实现对数据库实例的自动下线,而且使得下线的过程更加标准化、规范化,解决了现有的人工下线过程繁琐复杂且易出错等技术问题,更大的好处在于能够极大的降低误操作的概率,节省了人力时间减少人工判断错误的可能性,优化了现有的人工下线方法,全程自动化,不用再进行人工干预,提高了数据库实例的下线效率。

附图说明

为了更加清楚地说明本发明示例性实施例的技术方案,下面对描述实施例中所需要用到的附图做一简单介绍。显然,所介绍的附图只是本发明所要描述的一部分实施例的附图,而不是全部的附图,对于本领域普通技术人员,在不付出创造性劳动的前提下,还可以根据这些附图得到其他的附图。

图1是本发明实施例一所提供的一种数据库实例的下线方法的流程图;

图2是本发明实施例二所提供的一种数据库实例的下线方法的优选实例的流程图;

图3是本发明实施例三所提供的一种数据库实例的下线装置的结构图;

图4是本发明实施例四中的一种终端的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一所提供的一种数据库实例的下线方法的流程图,本实施例不仅可适用于对单个数据库实例下线的情况还可适用于对多个数据库实例进行批量下线的情况,该方法可以由数据库实例的下线装置来执行,该装置可通过硬件和/或软件的方式实现,并一般可由终端和服务器配合来实现本实施例的方法。

具体地,本实施例的方法包括:

s110、当接收到至少一个数据库实例的下线请求时,向预先存储有下线脚本的服务器发送携带有目标网际协议地址的脚本调用请求。

示例性地,下线请求可以是通过接收到的用户在操作界面输入的配置参数来确定。其中,配置参数包括待下线的至少一个数据库实例以及触发执行下线操作的指令等。例如,可以是检测到用户通过点击或声控等方式选中要下线的数据库实例,并触发了预设的可实现下线操作的功能键。可以理解的是,在本发明实施例中“至少一个”包括一个、两个或多个。本实施例中,尤为重要的是还能够在用户需要下线两个及两个以上的实现数据库实例时,对选中的所有的待下线的数据库实例进行批量下线。

对于数据库集群的数据管理中或者项目开发中,考虑到可能存在需要多台服务器及终端协同工作的需求,因此可以考虑将下线脚本预先存储在一个可以共享的服务器上,以便各服务器在需要时直接调用,而且不用在各个服务器分别编译并存储下线脚本,即方便对下线脚本进行管理,又能够减少用户的工作量,提高工作效率。

为了使得存储有下线脚本的服务器能够快速识别出是来自于哪台服务器的请求,可以在脚本调用请求中携带目标网际协议地址,以使存储有下线脚本的服务器能够根据目标服务器的目标网际协议地址将下线脚本传输到目标服务器上。具体地,可以通过文件传送函数来实现下线脚本的传输。该文件传输函数可以根据目标网际协议ip地址使用saltapi传送下线脚本到存储服务器上。

s120、接收文件传送函数所发送的与所述脚本调用请求对应的下线脚本,并执行所述下线脚本将与所述下线请求对应的至少一个数据库实例进行下线。

为了减少出错率保证下线过程的准确性及流畅度,在对待下线的数据库实例执行下线之前,可以对待下线的数据库实例进行下线前的检测,以判断数据库实例是不是适合现在下线。具体地,执行所述下线脚本将于所述下线请求对应得所述至少一个数据库实例进行下线,可包括:当所述下线脚本判断出至少一个数据库实例满足下线条件时,对所述至少一个数据库实例执行所述下线脚本中的下线操作。

示例性地,所述下线脚本判断出至少一个数据库实例满足下线条件,可包括:若所述下线脚本检测到至少一个所述数据库实例处于运行状态,且在预设休眠时间内未检测到用户访问,则判断出至少一个数据库实例满足下线条件。

以关系型数据库管理系统mysql为例,判断将要下线的数据库实例是在运行中,如果在运行中,可进一步通过获取general日志的输出信息来判断然预设的休眠时间内该实例是否有外部的用户访问进来。如果发现了仍然有外部的用户访问进来,终止下线流程,等待业务确认不再会连接该实例。如果在预设的休眠时间内没有发现任何用户再连接该实例,则可以确认该数据库实例满足下线条件。其中,general日志是mysql中用来记录所有数据库的操作的日志,是mysql数据库自身的审计日志。

在将数据库实例下线之前,可选时把将要下线的数据库实例对应的监控停止。具体可以根据该实例目前用到的监控的手段确定怎么操作,比如有可能是修改配置,也有可能是停止agent等。这样好处在于,可以避免监控系统在数据库实例下线的过程中不断报警而影响用户准确判断下线进程是否顺利的情况。

在本实施例中,所述对所述至少一个数据库实例执行下线操作,具体可包括:停止所述至少一个数据库实例的服务进程,并清空存储在数据库中与所述数据库实例对应的数据文件和安装目录,从而释放磁盘空间资源。

本发明实施例的技术方案,首先将下线脚本存储在公用的服务器上,可以在不影响目标服务器运行的同时,实现下线脚本的共享;进而在接收到至少一个数据库实例的下线请求时,发送脚本调用请求并接收文件传送函数所发送的下线脚本,实现下线脚本的传输,然后在本地端执行所述下线脚本将完成岁数据库实例的下线,能够实现对数据库实例的自动下线,而且使得下线的过程更加标准化、规范化,解决了现有的人工下线过程繁琐复杂且易出错等技术问题,更大的好处在于能够极大的降低误操作的概率,节省了人力时间减少人工判断错误的可能性,优化了现有的人工下线方法,全程自动化,不用再进行人工干预,提高了数据库实例的下线效率。

在上述技术方案的基础上,本发明实施例所提供的数据库实例的下线方法还可以包括:通过日志输出函数将与所述至少一个数据库实例对应的下线执行信息记录在第一日志中。不同于general日志,第一日志是我们程序中所定义的日志输出函数记录程序所执行的信息的日志,即程序的运行日志。

示例性地,可采用websocket实时获得下线脚本的返回信息,,通过ajax实时在下线的web页面上输出第一日志的日志信息。进一步地,还可以对返回的执行错误信息进行判断,如果有任何错误信息,则将执行错误信息突出显示,例如人性化地显示为红色,这样会一目了然的判断下线流程是否成功。

在此基础上,在待下线的数据库实例所有的下线流程完成,可以在第一日志中添加审计日志,,以方便以后对进行的操作查阅和分析。例如审计日志中可以记录下线脚本在执行哪一个函数,以及用了多少时间,是哪个用户在执行下线的这个操作等。

另外,本发明实施例所提供的数据库实例的下线方法还可以包括:将所述至少一个数据库实例进行备份生成备份文件,通过所述文件传输函数将所述备份文件传送函数发送给存储服务器。

示例性地,所述文件传输函数可根据saltstack管理工具的minion的主机名hostname,找到与存储服务器对应的网际协议地址,然后使用salt接口将备份文件传送给存储服务器。

需要说明的是,备份操作的执行时间可以根据实际需求来设置,即可以在下线之前将所述至少一个数据库实例进行备份生成备份文件,也可以在下线之后将所述至少一个数据库实例进行备份生成备份文件。

实施例二

图2是本发明实施例二所提供的一种数据库实例的下线方法的优选实例的流程图。作为本发明实施例的一优选实例,主程序使用pythondjango进行开发,利用saltstack进行对目标端进行命令行操作,利用websocket和输出进行实时交互,同时对返回结果做出判断,一目了然地看到整个安装过程和下线结果,使用python的pymysql模块,对数据库的命令操作,最终利用saltstack完成备份文件转储,后台全自动的完成整个下线过程。

如图2所示,本实施例的方法包括:

下线操作开始,通过日志模块,初始化日志。本操作可以通过日志输出函数来实现。具体地,对于安装的整个过程,利用python的logging模块进行模块化的日志设置,在日志实时显示在页面的同时,又能保证了安装日志的归档,便于以后随时查询已安装的实例的详细过程。

s210、调用saltsrack传送脚本文件到target目标服务器执行脚本。

通过接收到的下线操作界面的输入的配置参数,调用文件传送函数,把下线脚本传送到对应的服务器上去。

s220、目标实例未启动或者脚本执行失败,则结束下线操作。

判断将要下线的实例是否在运行中,如果已经停止,则返回操作错误的确认信息至前端页面展示。

s230、调用执行下线脚本。

示例性地,利用saltstack的cmd,runapi,带上下线web界面所填写的参数,在目标服务器上执行下线脚本。下线脚本主要是执行下线前的判断,数据的备份,以及下线的操作命令。

s240、持续判断是否有连接访问该数据库实例,若仍有连接访问则结束下线操作;若已经没有连接访问,则执行s250。

对将要下线的实例在线开启general日志,然后持续去判断获取general日志的输出信息,休眠12小时,然后进行general日志的对比判断,看休眠的这段时间内该数据库实例是否有外部的用户访问进来。如果发现了仍然有外部的用户访问进来,终止下线流程,等待业务确认不再会连接该数据库实例;如果没有发现任何用户再连接该数据库实例,则可以继续执行s250。

s250、进行备份、停止监控,下线、清空目录,释放资源等操作。

对将要下线的该实例进行数据备份,然后将备份进行压缩。进而把将要下线的实例对应的监控停止。停止该实例的服务进程。最后清空该实例的数据文件和其他一些用到的安装目录,释放磁盘空间资源。

在本实施例中,可利用websocket实时获得下线脚本的返回信息,通过ajax实时在下线的web页面上输出日志信息,同时对返回的错误信息进行判断,如果有任何错误信息,日志信息则会人性化地显示为红色。

s260、把备份文件转储到存储服务器上。

若上面一步正常执行完毕,则将备份文件进行转储,把下线脚本生成的备份文件利用文件传输函数传输到专用的备份转存到存储服务器上

本实施例中,文件传输函数根据saltstack的minion的hostname,找到对应的ip地址,然后使用saltapi传送备份的文件到存储服务器上,保证了将来若需要恢复数据时能够完全还原下线时的数据一致性状态。

s270、进行审计记录。

若所有的下线流程完成,添加审计日志方便以后对进行的操作查阅和分析。

结束下线流程。该自动化平台一方面是节省人力时间,更大的好处在于能够极大的降低误操作的概率,减少人工判断错误的可能性。只需要在web界面上填写待下线的实例ip和端口,点击下线按钮,全程自动化和可视化,不用再进行人工干预。并且对于所有下线的数据库,都会做好备份,以及备份转储,对于将来数据的核查或者恢复,也都有了极高的保障性,对于操作记录都有一套完整的审计日志,下线人员、下线实例、下线结果以及操作过程日志,永久保存,随时可查。

实施例三

图3所示为本发明实施例三提供的一种数据库实例的下线装置的结构示意图,该装置可通过硬件和/或软件的方式实现,并一般可由终端和服务器配合来实现本实施例的方法。如图3所示,本实施例的数据库实例的下线装置包括请求发送模块310和下线执行模块320。

其中,请求发送模块310,用于当接收到至少一个数据库实例的下线请求时,向预先存储有下线脚本的服务器发送携带有目标网际协议地址的脚本调用请求;下线执行模块320,用于接收文件传送函数所发送的与所述脚本调用请求对应的下线脚本,并执行所述下线脚本将与所述下线请求对应得所述至少一个数据库实例进行下线。

本发明实施例的技术方案,首先将下线脚本存储在公用的服务器上,可以在不影响目标服务器运行的同时,实现下线脚本的共享;进而在接收到至少一个数据库实例的下线请求时,发送脚本调用请求并接收文件传送函数所发送的下线脚本,实现下线脚本的传输,然后在本地端执行所述下线脚本将完成岁数据库实例的下线,能够实现对数据库实例的自动下线,而且使得下线的过程更加标准化、规范化,解决了现有的人工下线过程繁琐复杂且易出错等技术问题,更大的好处在于能够极大的降低误操作的概率,节省了人力时间减少人工判断错误的可能性,优化了现有的人工下线方法,全程自动化,不用再进行人工干预,提高了数据库实例的下线效率。

在上述技术方案的基础上,所述下线执行模块可用于:

当所述下线脚本判断出至少一个数据库实例满足下线条件时,对所述至少一个数据库实例执行所述下线脚本中的下线操作。

在上述各技术方案的基础上,所述下线执行模块进一步可用于:

若所述下线脚本检测到至少一个所述数据库实例处于运行状态,且在预设休眠时间内未检测到用户访问,则判断出至少一个数据库实例满足下线条件。

在上述技术方案的基础上,所述下线执行模块还可用于:

停止所述至少一个数据库实例的服务进程,并清空存储在数据库中与所述数据库实例对应的数据文件和安装目录。

在上述各技术方案的基础上,所述装置还可以包括:

执行信息记录模块,用于通过日志输出函数将与所述至少一个数据库实例对应的下线执行信息记录在第一日志中。

在上述各技术方案的基础上,所述装置还可以包括:

备份模块,用于将所述至少一个数据库实例进行备份生成备份文件,通过所述文件传输函数将所述备份文件传送函数发送给存储服务器。

在上述各技术方案的基础上,所述备份模块具体可用于:

所述文件传输函数根据saltstack管理工具的minion的主机名hostname,找到与存储服务器对应的网际协议地址,然后使用salt接口将备份文件传送给存储服务器。

上述数据库实例的下线装置可执行本发明实施例一和实施例二所提供的数据库实例的下线方法,具备执行上述方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例一和实施例二所提供的数据库实例的下线方法。

实施例四

图4为本发明实施例四所提供的一种终端的结构示意图。图4示出了适于用来实现本发明实施方式的示例性终端412的框图。图4显示的终端412仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图4所示,终端412以通用计算设备的形式表现。终端412的组件可以包括但不限于:一个或者多个处理器或者处理器416,存储装置428,用于存储一个或多个程序,连接不同系统组件(包括存储装置428和处理器416)的总线418。当所述一个或多个程序被所述一个或多个处理器416执行,使得所述一个或多个处理器416实现本发明任意实施例所述的电视数据自动更新的方法。

总线418表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。

终端412典型地包括多种计算机系统可读介质。这些介质可以是任何能够被终端412访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

存储装置428可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)430和/或高速缓存存储器432。终端412可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统434可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线418相连。存储器428可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块442的程序/实用工具440,可以存储在例如存储器428中,这样的程序模块442包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块442通常执行本发明所描述的实施例中的功能和/或方法。

终端412也可以与一个或多个外部设备414(例如键盘、指向设备、显示器424等)通信,还可与一个或者多个使得用户能与该终端412交互的设备通信,和/或与使得该终端412能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口422进行。并且,终端412还可以通过网络适配器420与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器420通过总线418与终端412的其它模块通信。应当明白,尽管图中未示出,可以结合终端412使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

处理器416通过运行存储在存储装置428中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的代码同步方法。

另外,本发明实施例还提供了一种包含计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行一种数据库实例的下线方法,该方法包括:

当接收到至少一个数据库实例的下线请求时,向预先存储有下线脚本的服务器发送携带有目标网际协议地址的脚本调用请求;

接收文件传送函数所发送的与所述脚本调用请求对应的下线脚本,并执行所述下线脚本将与所述下线请求对应的所述至少一个数据库实例进行下线。

可选的,该计算机可执行指令在由计算机处理器执行时还可以用于执行本发明任意实施例所提供的数据库实例的下线方法的技术方案。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读存储介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。

计算机可读存储介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读存储介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1