一种基于mysql的结构差异处理方法及系统的制作方法
【技术领域】
[0001]本发明涉及数据库技术领域,尤其涉及一种基于MYSQL的结构差异处理方法及系统。
【背景技术】
[0002]数据库作为系统的根基,其变化可以说是无时不刻的,在研发过程中增加了新的功能需求,修改了原有的需求,生产环境中对系统进行了实时的优化调整,这些都将引发了数据库的变更。
[0003]不同的操作人员,比如不同的开发人员,不同的维护人员,对部署在不同环境中的一套系统进行操作,特别是如今进入互联网时代,敏捷开发的流行,会导致变化频繁,因此需要去记录这些变化,并编写升级和处理方案。
[0004]目前的开发实践中,每个涉及的数据库开发人员都需要自己记录自己对数据库的修改,并编写变更处理脚本,然后统一汇总编写数据库的升级文件,进而进行版本发布。运维人员也需要记录自己的调整,并确保及时反馈和应用到其他服务器,防止不同环境运行了不一样的数据库。所以,现有的操作方式,开发人员需要去编写脚本,投入大量时间,也容易打断思维惯性,实践中也常出现人为因素忘记记录导致缺失升级模块的事情。在实际运营中也经常出现变更只生效到了部分服务器,并且难以排查。
[0005]因此,现有技术还有待于改进和发展。
【发明内容】
[0006]鉴于上述现有技术的不足,本发明的目的在于提供一种基于MYSQL的结构差异处理方法及系统,旨在解决现有的数据库结构差异解处理方法花费时间多、效率低、易出错等冋题。
[0007]本发明的技术方案如下:
一种基于MYSQL的结构差异处理方法,其中,包括步骤:
读取标准服务器与目标服务器的结构信息,根据所述结构信息比较标准服务器与目标服务器之间的结构差异,输出可重复执行的差异同步脚本;
根据所述差异同步脚本对目标服务器执行同步操作,使目标服务器与标准服务器保持结构一致。
[0008]所述的基于MYSQL的结构差异处理方法,其中,在读取结构信息之前还包括:
预先设置目标服务器的账号密码以及标准服务器的账号密码;
设置需要比较的数据库的名称;
以及差异同步脚本的生成路径。
[0009]所述的基于MYSQL的结构差异处理方法,其中,结构差异的比较过程具体包括: 自动将目标服务器与标准服务器进行连接;
循环选择目标服务器与标准服务器中的数据库,获取相应结构信息并解析; 根据解析的结构信息比较标准服务器与目标服务器之间的结构差异。
[0010]所述的基于MYSQL的结构差异处理方法,其中,输出可重复执行的差异同步脚本的过程包括:
当目标服务器有结构信息缺失时,则增加生成容错判重的新建SQL语句;
当目标服务器有结构信息变更时,则增加生成容错判重的修改SQL语句;
当目标服务器有结构信息多余时,则增加生成容错判重的删除SQL语句。
[0011]所述的基于MYSQL的结构差异处理方法,其中,定时进行标准服务器与目标服务器之间结构差异的比较,并输出差异脚本文件。
[0012]一种基于MYSQL的结构差异处理系统,其中,包括:
输出模块,用于读取标准服务器与目标服务器的结构信息,根据所述结构信息比较标准服务器与目标服务器之间的结构差异,输出可重复执行的差异同步脚本;
同步模块,用于根据所述差异同步脚本对目标服务器执行同步操作,使目标服务器与标准服务器保持结构一致。
[0013]所述的基于MYSQL的结构差异处理系统,其中,还包括:
预设模块,用于预先设置目标服务器的账号密码以及标准服务器的账号密码;设置需要比较的数据库的名称;以及差异同步脚本的生成路径。
[0014]所述的基于MYSQL的结构差异处理系统,其中,所述输出模块具体包括:
连接单元,用于自动将目标服务器与标准服务器进行连接;
解析单元,用于循环选择目标服务器与标准服务器中的数据库,获取相应结构信息并解析;
比较单元,用于根据解析的结构信息比较标准服务器与目标服务器之间的结构差异。
[0015]所述的基于MYSQL的结构差异处理系统,其中,所述输出模块还包括:
增加单元,用于当目标服务器有结构信息缺失时,则增加生成容错判重的新建SQL语句;
变更单元,用于当目标服务器有结构信息变更时,则增加生成容错判重的修改SQL语句;
删除单元,用于当目标服务器有结构信息多余时,则增加生成容错判重的删除SQL语句。
[0016]所述的基于MYSQL的结构差异处理系统,其中,所述输出模块中,定时进行标准服务器与目标服务器之间结构差异的比较,并输出差异脚本文件。
[0017]有益效果:本发明可自动检测不同数据库结构中存在的差异,并自动编码生成出处理差异的可执行方案(差异同步脚本),简化了版本升级的流程,增加升级的准确性,确保生产环境的正确性,节省了人力消耗,同时大大降低人为的失误因数。并且这种脚本是容错的,可重复执行。
【附图说明】
[0018]图1为本发明一种基于MYSQL的结构差异处理方法较佳实施例的流程图;
图2为本发明中MYSQL系统信息库的截图;
图3为图1所示方法中步骤SlOl读取结构信息之前的具体流程图; 图4为图1所示方法中步骤SlOl中结构差异比较过程的具体流程图;
图5为图1所示方法中步骤SlOl中生成可重复执行的差异同步脚本的具体流程图; 图6为本发明一种基于MYSQL的结构差异处理系统较佳实施例的结构框图;
图7为图6所示系统中输出模块的一具体结构框图;
图8为图6所示系统中输出模块的另一具体结构框图。
【具体实施方式】
[0019]本发明提供一种基于MYSQL的结构差异处理方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0020]请参阅图1,图1为本发明一种基于MYSQL的结构差异处理方法较佳实施例的流程图,如图所示,其包括步骤:
5101、读取标准服务器与目标服务器的结构信息,根据所述结构信息比较标准服务器与目标服务器之间的结构差异,输出可重复执行的差异同步脚本;
5102、根据所述差异同步脚本对目标服务器执行同步操作,使目标服务器与标准服务器保持结构一致。
[0021]本发明利用MYSQL数据库的内核结构信息,对标准服务器与目标服务器的数据库的结构进行解析,对比解析结果得出有差异的结构信息,再根据这些结构信息来生成处理差异的差异同步脚本,按照该差异同步脚本进行同步操作,从而将之前需要人工执行的操作全部自动化完成,大大降低了成本和风险。本发明可自动检测不同数据库结构中存在的差异,并自动编码生成出处理差异的可执行方案(差异同步脚本),简化了版本升级的流程,增加升级的准确性,确保生产环境的正确性,节省了人力消耗,同时大大降低人为的失误因数。并且这种脚本是容错的,可重复执行。
[0022]在一个产品项目中,通常会使用数据库中的这些结构:
SCHEMA 数据库(即 DATABASE)
TABLE 表 CLOLMN 字段 INDEX 索引 VIEW视图
PROCEDURE 存储过程 FUNCT1N 函数 TRIGGER 触发器 EVENTS 时间
这些结构组成了一个数据存储的体系。
[0023]在MYSQL数据库的系统中,存在一个系统的shecma:1nformat1n_schema。如图2所示:MYSQL把数据库的各种信息显示到这里,提供给开发人员使用,其中也包含了所增加的业务数据的结构信息。
[0024]例如:当新增了一个表,这个库里面的TABLES表,就会增加一条记录,来记录新建表的相关信息。
[0025]图2 中,informat1n_schema 为系统信息库下属的COLUMNS表,记录了插入表的字段信息。
[0026]下属的EVENTS表,记录了插入的事件信息。
[0027]下属的ROUTINES表,记录了插入的存储过程和函数信息。
[0028]其他的结构也都可以找出对应的信息记录。
[0029]所以本发明可对比目标数据库和标准数据库中相对应的结构信息,寻找差异,并生成处理差异的可执行文件(差异同步脚本)。
[0030]如图3所示,在读取结构信息之前还包括:
S201、预先设置目标服务器的账号密码以及标准服务器的账号密码;包括设置好目标服务器和标准服务器的IP地址。
[0031]S202、设置需要比较的数据库的名称,即设置好需要比对哪些数据库,以冒号分隔的方式成对设置;以及差异同步脚本的生成路径。
[0032]以开发环境下的应用为例,将开发服务器的IP地址设置为标准服务器IP,设置好账号密码;并将测试服务器的IP地址设置为目标服务器IP,设置好账号密码;设置需要比对哪些数据库,以冒号分隔方式成对设置,设置好差异同步脚本的生成路径。
[0033]如图4所示,结构差异的比较过程具体包括:
5301、自动将目标服务器与标准服务器进行连接;
5302、循环选择目标服务器与标准服务器中的数据库,获取相应结构信息并解析;
5303、根据解析的结构信息比较标准服务器与目标服务器之间的结构差异。
[0034]具体来说,分别从两个服务器获取数据库的结构信息进行解析,包含表,视图,存储过程,函数,触发器,事件等结构,比较它们之间的差异。
[0035]如图5所示,输出可重复执行的差异同步脚本的过程具体包括:
5401、目标服务器有结构信息缺失时,则增加生成容错判重的新建SQL语句;
5402、当目标服务器有结构信息变更时,则增加生成容错判重的修改SQL语句;
5403、当目标服务器有结构信息多余时,则增加生成容错判重的删除SQL
语句。上述序号仅为方便说明,并不代表对各步骤执行顺序的限定。
[0036]比对完成后,即生成差异同步脚本,这个差异同步脚本即可用来同步目标服务器。用户可对差异同步脚本的内容进行查看确认,确认这些变化操作都是需要的,也可对差异同步脚本进行修改调整。然后,在目标服务器上执行此差异同步脚本对测试数据库进行版本升级,执行升级完毕后两个数据库的结构就一致了。
[0037]此差异同步脚本在测试服务器的测试数据库测试过需求后,再用来升级部署各套线上正式环境的数据库。为避免线上环境的更改,也可以在测试数据库和正式数据库之间进行差异检测,生成新的差异同步脚本后再进行升级。
[0038]在具体实施时,将目标服务器A与标准服务器B连接;
然后指定一个需要对比的schema (数据库);
例如:目标服务器A的system库和标准服务器B的system库进行对比;
再分类检索子结构,进行分类比对;
例如以PROCEDURE (存储过程)数据结构为例;
首先分别获取A和B的存储过程名称列表,进行对比。
[0039]如果A存在,而B不存在,则需要删除A中的PROCEDURE,生成删除该PROCEDURE的同步SQL脚本。
[0040]如果A不存在,而B存在,则A需要增加这个PROCEDURE,生成新建该PROCEDURE的同步SQL脚本。
[0041]如果A,B同时存在,再进行进一步获取PROCEDURE的详细信息,对比详细的内部实现,definer等信息。不一致则生成更新该PROCEDURE的同步SQL脚本。一致的话就不做处理,进入下一项对比。
[0042]其他类型的结构,也按同样的逻辑进行对比,其中table里面还细分了 column和index两个子项的循环对比。
[0043]一个schema检测结束后,如果存在差异,进行差异提示并输出差异同步脚本。
[0044]服务器基本都存在多个schema,可以指定多个schema,在对比完成一个以后,自动切换至下一组进行比对。
[0045]最后,如果存在差异,生成差异同步脚本。针对目标服务器的数据库执行差异同步文件,即可完成数据库的快速同步。为了避免在同步的过程中中断的情况发生,而引发需要重复执行同步的情况,生成的差异同步脚本可重复执行,避免重复执行的报错。如:创建表,字段等信息时是判断存在,存在则不创建,删除字段,索引等信息,也进行存在判断,判断操作也通过检测informat1n_schema库的信息。
[0046]在现实的生产环境中,一个系统根据运营商的不同和使用者的不同,往往会部署很多套环境。联网存在即时性,经常有些修改会运营库上直接调整,再运营过程整也有时会对DB进行优化调整。此时也容易产生数据库之间差异。
[0047]在此情况下,本发明的差异检测也能发挥效能,和开发环境类似的,配置好需要比对的两个服务器的IP地址,分别为标准服务器和目标服务器,设置好需要对比数据库,差异同步文件的输出路径,在数据库低压力时间段,定期执行差异检测程序,比如每周二的凌晨2点,执行一次差异检测(定时进行标准服务器与目标服务器之间结构差异的比较,并输出差异脚本文件)。当两个服务器之间存在结构不同,输出一个非空的差异同步脚本,短信或者邮件通知运维人员进行处理。本发明可针对两两服务器之间的检测,对于多个服务器,可使用多个检测进程即可。
[0048]针对夸互联网的部署,为提升检测的速度,避免网络带来的减速,可通过批处理的方式将线上数据库的结构复制到本地数进行比对检测。
[0049]基于上述方法,本发明还提供一种基于MYSQL的结构差异处理系统较佳实施例,如图6所示,其包括:
输出模块100,用于读取标准服务器与目标服务器的结构信息,根据所述结构信息比较标准服务器与目标服务器之间的结构差异,输出可重复执行的差异同步脚本;
同步模块200,用于根据所述差异同步脚本对目标服务器执行同步操作,使目标服务器与标准服务器保持结构一致。
[0050]进一步,所述系统其还包括:
预设模块,用于预先将目标服务器的IP地址设置为标准服务器的IP地址,并设置目标服务器的账号密码;将标准服务器的IP地址设置为目标服务器的IP地址,并设置标准服务器的账号密码;设置需要比较的数据库的名称;以及差异同步脚本的生成路径。
[0051]进一步,如图7所示,所述输出模块100具体包括:
连接单元110,用于自动将目标服务器与标准服务器进行连接;
解析单元120,用于循环选择目标服务器与标准服务器中的数据库,获取相应结构信息并解析;
比较单元130,用于根据解析的结构信息比较标准服务器与目标服务器之间的结构差升。
[0052]进一步,如图8所示,所述输出模块100还包括:
增加单元140,用于当目标服务器有结构信息缺失时,则增加生成容错判重的新建SQL语句;
变更单元150,用于当目标服务器有结构信息变更时,则增加生成容错判重的修改SQL语句;
删除单元160,用于当目标服务器有结构信息多余时,则增加生成容错判重的删除SQL语句。
[0053]进一步,所述输出模块100中,定时进行标准服务器与目标服务器之间结构差异的比较,并输出差异脚本文件。
[0054]关于上述模块单元的技术细节在前面的方法中已有详述,故不再赘述。
[0055]综上所述,本发明可自动检测不同数据库结构中存在的差异,并自动编码生成出处理差异的可执行方案(差异同步脚本),简化了版本升级的流程,增加升级的准确性,确保生产环境的正确性,节省了人力消耗,同时大大降低人为的失误因数。并且这种脚本是容错的,可重复执行。
[0056]应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
[0057]应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
【主权项】
1.一种基于MYSQL的结构差异处理方法,其特征在于,包括步骤: 读取标准服务器与目标服务器的结构信息,根据所述结构信息比较标准服务器与目标服务器之间的结构差异,输出可重复执行的差异同步脚本; 根据所述差异同步脚本对目标服务器执行同步操作,使目标服务器与标准服务器保持结构一致。2.根据权利要求1所述的基于MYSQL的结构差异处理方法,其特征在于,在读取结构信息之前还包括: 预先设置目标服务器的账号密码以及标准服务器的账号密码; 设置需要比较的数据库的名称; 以及差异同步脚本的生成路径。3.根据权利要求1所述的基于MYSQL的结构差异处理方法,其特征在于,结构差异的比较过程具体包括: 自动将目标服务器与标准服务器进行连接; 循环选择目标服务器与标准服务器中的数据库,获取相应结构信息并解析; 根据解析的结构信息比较标准服务器与目标服务器之间的结构差异。4.根据权利要求1所述的基于MYSQL的结构差异处理方法,其特征在于,输出生成可重复执行的差异同步脚本的过程包括: 当目标服务器有结构信息缺失时,则增加生成容错判重的新建SQL语句; 当目标服务器有结构信息变更时,则增加生成容错判重的修改SQL语句; 当目标服务器有结构信息多余时,则增加生成容错判重的删除SQL语句。5.根据权利要求1所述的基于MYSQL的结构差异处理方法,其特征在于,定时进行标准服务器与目标服务器之间结构差异的比较,并输出差异脚本文件。6.一种基于MYSQL的结构差异处理系统,其特征在于,包括: 输出模块,用于读取标准服务器与目标服务器的结构信息,根据所述结构信息比较标准服务器与目标服务器之间的结构差异,输出可重复执行的差异同步脚本; 同步模块,用于根据所述差异同步脚本对目标服务器执行同步操作,使目标服务器与标准服务器保持结构一致。7.根据权利要求6所述的基于MYSQL的结构差异处理系统,其特征在于,还包括: 预设模块,用于预先设置目标服务器的账号密码以及标准服务器的账号密码;设置需要比较的数据库的名称;以及差异同步脚本的生成路径。8.根据权利要求6所述的基于MYSQL的结构差异处理系统,其特征在于,所述输出模块具体包括: 连接单元,用于自动将目标服务器与标准服务器进行连接; 解析单元,用于循环选择目标服务器与标准服务器中的数据库,获取相应结构信息并解析; 比较单元,用于根据解析的结构信息比较标准服务器与目标服务器之间的结构差异。9.根据权利要求6所述的基于MYSQL的结构差异处理系统,其特征在于,所述输出模块还包括: 增加单元,用于当目标服务器有结构信息缺失时,则增加生成容错判重的新建SQL语句; 变更单元,用于当目标服务器有结构信息变更时,则增加生成容错判重的修改SQL语句; 删除单元,用于当目标服务器有结构信息多余时,则增加生成容错判重的删除SQL语句。10.根据权利要求6所述的基于MYSQL的结构差异处理系统,其特征在于,所述输出模块中,定时进行标准服务器与目标服务器之间结构差异的比较,并输出差异脚本文件。
【专利摘要】本发明公开一种基于MYSQL的结构差异处理方法及系统,其中,方法包括步骤:读取标准服务器与目标服务器的结构信息,根据所述结构信息比较标准服务器与目标服务器之间的结构差异,输出可重复执行的差异同步脚本;根据所述差异同步脚本对目标服务器执行同步操作,使目标服务器与标准服务器保持结构一致。本发明可自动检测不同数据库结构中存在的差异,并自动编码生成出处理差异的可执行方案(差异同步脚本),简化了版本升级的流程,增加升级的准确性,确保生产环境的正确性,节省了人力消耗,同时大大降低人为的失误因数。并且这种脚本是容错的,可重复执行。
【IPC分类】G06F17/30
【公开号】CN104881455
【申请号】CN201510260394
【发明人】曾秋阳
【申请人】深圳市酷开网络科技有限公司
【公开日】2015年9月2日
【申请日】2015年5月20日
转载请注明原文地址:https://www.famiwei.com/read-8138620.html