一种数据库中间件动态配置方法、系统、设备、存储介质与流程

文档序号:18192962发布日期:2019-07-17 05:40阅读:144来源:国知局
本发明涉及数据库,尤其涉及一种数据库中间件动态配置方法、系统、设备、存储介质。
背景技术
::随着mycat-x在正式生产环境上的使用越来越广,暴露出mycat-x在运维上的一些不足:在mycat-x使用过程当中,经常遇到在变更窗口需要调节某个参数选项,只能通过登录服务器,以手动方式去修改配置文件,最后通过重启mycat-x服务以达到更新配置的目的。人工修改配置,重启服务,同时还需要业务系统配合进行变更,极大地增加了运维人力成本。更进一步,业务系统迭代更新,mycat-x需要配合业务系统增加相应的数据分片配置。技术实现要素:为了解决上述技术问题,本发明的目的在于提供一种数据库中间件动态配置方法、系统、设备、存储介质。根据本发明的一个方面,提供了一种数据库中间件动态配置方法,包括以下步骤:s1、数据库中间件接收客户端下发的针对配置文件处理操作的sql命令;s2、对所述sql命令进行解析,并与预设的sql命令语法匹配,若匹配,则执行步骤s3;s3、根据解析出的处理类型对相应的配置文件进行处理。数据库中间件为mycat-x。mycat-x是一种闭源分布式数据库中间件,包括:解析模块:sql通过mycat-x的druidparser解析出sql语句中各个对象(表,列,分片字段a值);路由模块:mycat-x的路由模块使用定义的分片算法算(以a作为算法参数)对应的路由节点;节点判断模块:判断路由是否为多节点,若是且为分片表及sql语句类型为insert/update/delete,则若跨多个节点的事务即分布式事务开关打开,执行分布式式事务拦截,并设置事务中断标志,否则则将sql发送到后端执行,若非,即为单节点则将sql发送到后端执行;回滚判断模块:根据事务中断标志,判断是否要执行rollback操作;管理命令模块:在管理端口(9066端口)增加一个管理命令checktablestructureconsistencyfor[schemaname];,用于检测分表(包括全局表和分片表)表结构的一致性。且将返回不一致部分的详细提示,返回给客户端,方便相关人员进行定位;sql防火墙模块:基于druidparser自带规则和黑名单的方式,通过sql防火墙对进入mycat-x的sql进行sql解析出每一个对象,用druidparser规则进行判断,符合规则的,判断sql字符是否在黑白名单里面,拦截符合规则或者在黑名单里面sql;内存管理模块:采用堆外内存+磁盘文件方式,支持etl拉取海量数据能力,整个内存区域分为二块,一块来存放所有对象完整的二进制数据,另一个区域用来存放指向完整二进制数据的指针以及定长8byte的序列化后的key(key+pointer)。如果需要序列化的key是个变长类型,如string,则会取其前缀序列化;h2db小型嵌入式数据库:让mycat-x运行过程中的信息,直接写入或者定时写入h2db数据库,这样通过9066端口输入查询命令(标准sql语句),转发到h2db数据库查询引擎中,最后将结果返回给用户。进一步的,对相应的配置文件进行处理,包括:更新数据库中间件元数据的配置文件;刷新本地配置文件。进一步的,所述的数据库中间件动态配置方法,还包括:将刷新之前的原本地配置文件备份至本地配置backup仓库中。进一步的,所述的数据库中间件动态配置方法,还包括:当处理操作错误时,本地配置文件回滚至原配置文件。进一步的,所述对所述sql命令进行解析,并与预设的sql命令语法匹配,包括:s201、解析由客户端下发的查看命令并与预设的查看语法匹配;s202、根据解析结果匹配需要查看的元数据配置;s203、封装待查看的数据;s204、将待查看的数据反馈给客户端。进一步的,所述对所述sql命令进行解析,并与预设的sql命令语法匹配,包括:s211、解析由客户端下发的创建/修改命令并与预设的创建/修改语法匹配;s212、根据解析内容,检查待创建/修改的配置是否合法,若合法,则备份配置文件;s213、针对配置文件追加待创建/覆盖待修改的配置项,若成功,则将创建/修改的配置同步追加到数据库中间件元数据配置中。进一步的,所述对所述sql命令进行解析,并与预设的sql命令语法匹配,包括:s221、解析由客户端下发的删除命令并与预设的删除语法匹配;s222、根据解析结果,检查待删除的配置是否合法,若合法,则备份配置文件;s223、针对配置文件删除需要删除的配置项,若成功,则将需要删除的配置从数据库中间件元数据配置中清理掉。进一步的,所述对所述sql命令进行解析,并与预设的sql命令语法匹配,包括:s231、解析由客户端下发的备份命令并与预设的备份语法匹配;s232、将数据库中间件所有配置文件保存在备份目录下。进一步的,所述步骤s232中包括:以配置文件最后配置操作时间节点为标识,标记所有配置文件。进一步的,所述对所述sql命令进行解析,并与预设的sql命令语法匹配,包括:s241、解析由客户端下发的回滚命令并与预设的回滚命令语法匹配;s242、根据解析结果,判断需要回滚的时间点是否合法,若合法,则根据需要回滚的时间点,找到对应的更新前的配置文件;s243、重新读取该配置文件并更新相关的元数据配置。进一步的,所述对所述sql命令进行解析,并与预设的sql命令语法匹配,包括:s251、解析由客户端下发的导出命令并与预设的导出语法匹配;s252、根据解析结果,匹配需要导出的配置,若请求导出的配置合法,则根据配置反解析成创建语法指令格式。进一步的,所述的数据库中间件动态配置方法,还包括:若对相应的配置文件处理成功,则反馈结果至客户端;若对相应的配置文件处理操作不合法或处理失败,则反馈不合法原因或失败原因至客户端。根据本发明的另一个方面,提供了一种数据库中间件动态配置系统,包括:网络层,接受客户端下发的针对配置文件处理操作的sql命令,并将其传输至sql解析层;sql解析层,对所述sql命令进行解析,并与预设的sql命令语法匹配;动态配置处理层,根据解析出的处理类型对相应的配置文件进行处理。进一步的,对相应的配置文件进行处理,包括:更新数据库中间件元数据的配置文件;刷新本地配置文件。进一步的,所述的数据库中间件动态配置系统,还包括:将刷新之前的原本地配置文件保存至本地配置backup仓库中。根据本发明的另一个方面,提供了一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如上述任一项所述的方法。根据本发明的另一个方面,提供了一种存储有计算机程序的计算机可读存储介质,其特征是,该程序被处理器执行时实现如上述任一项所述的方法。与现有技术相比,本发明具有以下有益效果:1、本发明示例的数据库中间件动态配置方法,数据库中间件接收客户端下发的针对配置文件处理操作的sql命令;对所述sql命令进行解析,并与预设的sql命令语法匹配;根据解析出的处理类型对相应的配置文件进行处理,实现不同类别的动态配置操作处理。通过在线修改配置方式,无需重启服务即可让修改配置及时生效,业务系统对数据库中间件的变更可做到无感知。支持远程操作,无需登录服务器去修改配置文件,极大地减低运维人员手工修改文件导致误操作的概率,最大化降低运维成本。2、本发明示例的数据库中间件动态配置方法,支持数据库中间件在线修改参数和数据分片配置;配置文件多版本管理,提供配置修改的备份和回滚功能,让配置出错的时候可以及时回滚。支持配置文件反解析成sql语句,统一各个环境的操作命令;提供导出功能,极大地降低多个数据库中间件为保持配置一致而配置出错的概率。3、本发明示例的数据库中间件动态配置系统,通过网络层,接受客户端下发的针对配置文件处理操作的sql命令,并将其传输至sql解析层;通过sql解析层,对所述sql命令进行解析,并与预设的sql命令语法匹配;通过动态配置处理层,根据解析出的处理类型对相应的配置文件进行处理。上述单元协同合作,共同实现对相应的配置文件的操作处理,无需重启服务即可让修改配置及时生效,业务系统对数据库中间件的变更可做到无感知。4、本发明示例的设备,实现不同类别的动态配置操作处理。通过在线修改配置方式,无需重启服务即可让修改配置及时生效。5、本发明示例的存储有计算机程序的计算机可读存储介质,该程序被处理器执行时实现如上述任一项所述的方法,实现不同类别的动态配置操作处理,最大化降低运维成本,无需重启服务即可让修改配置及时生效,值得推广。附图说明图1为本发明流程图;图2为本发明数据库中间件的架构图。具体实施方式为了更好的了解本发明的技术方案,下面结合具体实施例、说明书附图对本发明作进一步说明。实施例一:如图1所示,本实施例提供了一种数据库中间件动态配置方法,包括以下步骤:s1、数据库中间件接收客户端下发的针对配置文件处理操作的sql命令。具体包括:1)客户端通过mysql客户端登陆mycat-x9066端口;2)下发请求配置动态更改的sql命令,如:mycat_configcreateschema`testdb`;3)mycat-x通过网络层接收到该命令。在mycat-x里实现了动态配置功能,支持以sql命令下发的形式,实现在线的配置修改。该模块属于mycat-x里面的一个子模块,架构图如下图2所示(注意,mycat-x还包含其他模块,该架构图只展示与动态配置模块相关联的模块)。s2、对所述sql命令进行解析,并与预设的sql命令语法匹配,若匹配,则执行步骤s3。具体包括:经过扩展的sql解析层,解析得出自定义的动态配置更该sql命令。s3、根据解析出的处理类型对相应的配置文件进行处理。其中,对相应的配置文件进行处理,包括:更新数据库中间件元数据的配置文件;刷新本地配置文件。该步骤具体包括:1)根据语句类型,由“动态配置处理层”模块接受处理,对于上图所下发的sql,需要同时更新mycat-x运行时的元数据配置,同时还需要同步刷新本地配置文件schema.xml;2)对于这个修改操作,会保存到本地配置backup仓库里,以便用户发现错误的时候回滚原先的配置,简单来说这里就是实现了一个版本配置的回滚功能。在此基础上,实现“动态配置处理层”。根据sql解析器解析出的sql类型,判断sql是否满足自定义的sql语法,如果满足,会被“动态配置处理层”捕获并进行处理。对于请求动态更改配置,需要同时更新mycat-x中运行态(即内存态)的元数据和本地化的配置文件,以确保mycat-x服务重启后配置能够保持最新。在内部,将这两个步骤原子化,确保刷新内存态配置和刷新的本地化配置文件始终是保持一致的。更进一步,参考版本控制的理念,实现了简单的本地配置版本控制,用于实现不同版本配置的回滚,主要是为了能够在使用者下发了错误的动态配置更改之后,能够回滚到原来正确的配置。同时,参考mysqldump工具,实现了配置sql的导出功能(等价于前面提到的将配置文件反解析为sql语句),用户可以选择导出这些sql并在另外一个mycat-x中引用这部分配置sql,使两个mycat-x服务的配置保持一致。该技术方案主要通过扩展mycat-x原有的sql解析器,实现自定义的sql命令语法,用于实现不同类别的动态配置更改,命令的处理流程如下说明:1、查看类命令处理流程1)接收客户端发出的指令;2)与预设的查看语法匹配,根据解析结果匹配需要查看的元数据配置,封装待查看的数据;3)将待查看的数据反馈给客户端,流程处理结束。其中,查看类语法为:mycat_configlistschemas:列出所有schema信息;mycat_configlisttables:列出当前schema下所有table信息,配合use[schema]命令确定schema;mycat_configlistdatanodes:列出所有datanode信息;mycat_configlistdatahosts:列出所有datahost信息;mycat_configlistusers:列出所有user信息;mycat_configlistrules:列出所有分片规则信息;mycat_configlistfunctions:列出所有分片算法信息;mycat_configlistsystemvariables[like'%xxx%']:列出所有系统变量,可以使用like进行匹配查询;mycat_configlistsqlwallvariables[like'%xxx%']:列出所有sql防火墙变量,可以使用like进行匹配查询;mycat_configlistmapfiles:列出所有的mapfile文件;mycat_configshowmapfile${mapfile_name}:查看指定mapfile的内容;mycat_configlistbackups:列出所有备份。2、创建/修改类命令处理流程1)接受客户端发出的指令;2)与预设的创建/修改语法匹配,根据解析内容,检查待创建/修改的配置是否合法,若合法则进入3),否则直接跳转7);3)备份配置文件;4)配置文件追加待创建/覆盖待修改的配置项,成功则继续5),失败则跳转7);5)最后将创建/修改的配置同步追加到系统(数据库中间件)元数据配置中;6)创建成功,反馈结果给客户端,流程处理结束;7)创建失败,反馈失败原因给客户端,流程处理结束。其中,创建类语法为:mycat_configcreateschema[...]:创建schema;mycat_configcreatetable[...]:创建table,包括分片表、全局表和普通表;mycat_configcreatechildtable[...]:创建子表;mycat_configcreateuser[...]:创建user;mycat_configcreaterule[...]:创建分片规则;mycat_configcreatefunction[...]:创建分片算法;mycat_configcreatedatanode[...]:创建datanode;mycat_configcreatedatahost[...]:创建datahost;mycat_configcreatemapfile[...]:创建mapfile。该修改类语法为:mycat_configalteruser[...]:修改user信息;mycat_configsetsystemvariable[...]:设置系统变量;mycat_configsetfirewallvariable[...]:设置防火墙变量。3、删除类命令处理流程1)接收客户端发出的指令;2)与预设的删除语法匹配,根据解析结果,检查待删除的配置是否合法,若合法则进入3);3)备份配置文件;4)配置文件删除需要删除的配置项,成功则继续5),失败则跳转7);5)最后将需要删除的配置从系统元数据配置中清理掉;6)删除成功,反馈结果给客户端,流程处理结束;7)删除失败,反馈失败原因给客户端,流程处理结束。该删除类语法为:mycat_configdropschema[schemaname]:删除指定的schema;mycat_configdroptable[tablename]:删除指定的table;mycat_configdropuser[username]:删除指定的user;mycat_configdroprule[rulename]:删除指定的分片规则;mycat_configdropfunction[functionname]:删除指定的分片算法;mycat_configdropdatanode[datanodename]:删除指定的datanode;mycat_configdropdatahost[datahostname]:删除指定的datahost;mycat_configdropmapfile[mapfilename]:删除指定的mapfile。4、备份命令处理流程1)接受客户端发出的指令;2)与预设的备份语法匹配,将系统所有配置文件统一打包到zip格式的压缩包,保存在统一的备份目录下,文件命名按“最后配置操作”+“时间”的格式命名,避免重复,成功进入3),失败则跳转4);3)备份成功,反馈结果给客户端,流程处理结束;4)备份失败,反馈失败原因给客户端,流程处理结束。5、回滚命令处理流程1)接受客户端发出的指令;2)与预设的回滚命令语法匹配,判断需要回滚的时间点是否合法,合法则进行3),不合法则跳转5);根据需要回滚的时间点,找到对应的备份压缩zip格式文件,进行解压,覆盖原有的配置文件,然后系统重新读取这些配置文件,更新内存中相关的元数据配置;3)回滚成功,反馈结果给客户端,流程处理结束;4)回滚失败,反馈失败原因给客户端,流程处理结束。该备份和回滚命令为:mycat_configlistbackups:列举所有的备份信息;mycat_configbackup:主动触发配置信息的备份;mycat_configrollbackto${index}:回滚配置信息,将配置信息恢复到某个特定的版本。6、dump(导出)命令处理流程1)接受客户端发出的指令;2)与预设的dump命令语法匹配;3)根据dump命令解析结果,匹配需要dump出来的配置,若请求dump的配置合法,则进入4),否则跳转6);4)根据配置反解析成创建语法指令格式;5)将4)中的结果反馈给客户端,流程处理结束;6)dump执行失败,反馈失败原因给客户端,流程处理结束。该dump命令为:mycat_configdumpall[into'${file}']:全量导出所有配置所需要的创建sql;mycat_configdumpschemas${schema_list_split_by_comma}[into'${file}']:实现库级别的配置sql导出,可导出多个库,多个库名之间用`,`隔开;mycat_configdumpall_tables[into'${file}']:实现表级别的配置导出,导出某个schema下的所有table相关的配置,需要配合use命令指定schema;mycat_configdumptables${table_list_split_by_comma}[into'${file}']:实现表级别的配置导出,可以导出多个表,多个表之间用`,`隔开,需要配合use命令指定schema。本实施例支持mycat-x在线修改参数和数据分片配置;通过在线修改配置方式,无需重启服务即可让修改配置及时生效,业务系统对mycat-x的变更可做到无感知;远程命令操作,极大地减低运维人员手工修改文件导致误操作的概率,最大化降低运维成本;配置文件多版本管理,提供配置修改的备份和回滚功能,让配置出错的时候可以及时回滚;支持配置文件反解析成sql语句,统一各个环境的操作命令;提供dump导出功能,极大地降低多个mycat-x为保持配置一致而配置出错的概率。本实施例提供了一种数据库中间件动态配置系统,包括:网络层,接受客户端下发的针对配置文件处理操作的sql命令,并将其传输至sql解析层;sql解析层,对所述sql命令进行解析,并与预设的sql命令语法匹配;动态配置处理层,根据解析出的处理类型对相应的配置文件进行处理。其中,对相应的配置文件进行处理,包括:更新数据库中间件元数据的配置文件;刷新本地配置文件。将刷新之前的原本地配置文件保存至本地配置backup仓库中本实施例提供了一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如上述任一项所述的方法。本实施例提供了一种存储有计算机程序的计算机可读存储介质,其特征是,该程序被处理器执行时实现如上述任一项所述的方法。该计算机可读存储介质可以是上述实施例中所述设备中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行。实施例二本实施例与实施例一相同的特征不再赘述,本实施例与实施例一不同的特征在于:4、备份命令处理流程1)接受客户端发出的指令;2)与预设的备份语法匹配,将系统所有配置文件统一打包到zip格式的压缩包,保存在统一的备份目录下,成功进入3),失败则跳转4);3)备份成功,反馈结果给客户端,流程处理结束;4)备份失败,反馈失败原因给客户端,流程处理结束。以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1