Arkit MySQL SQL自动审核和执行系统
华为云云市场ArkitMySQL,SQL是一个针对MySQL的SQL自动化审核和执行工具,保证SQL审核百分之百兼容MySQL语法。 Arkit是一个针对MySQL的SQL自动化审核和执行工具,它是一款MySQL的插件,安装和使用方式跟标准的MySQL插件一致。 Arkit的SQ
- 华为云云市场Arkit MySQL,SQL是一个针对MySQL的SQL自动化审核和执行工具,保证SQL审核百分之百兼容MySQL语法。
Arkit是一个针对MySQL的SQL自动化审核和执行工具,它是一款MySQL的插件,安装和使用方式跟标准的MySQL插件一致。
Arkit的SQL审核100%兼容MySQL语法,同时它也可以自动执行审核成功的语句。在执行SQL过程中,Arkit可以生成被影响数据库的回滚语句,用来实现数据库的闪回功能。对于审核和执行的结果,Arkit以结果集的方式展现出来。
Arkit内置很多配置参数,可以通过修改参数配置相应的审核行为,即我们所说的规则的配置。
在执行DDL的过程中,Arkit支持两种自动化在线改表方式,一种是调用pt-online-schema-change工具,另一种还支持内置的通过分析Binlog获取增量数据的方式来修改表,在执行过程中,可以通过参数控制在线改表的执行行为。
使用Arkit,实现操作数据库的自动化运维,可以极大提升DBA的工作效率,标准化SQL审核,降低线上执行SQL出错的概率,并有机会实现数据库操作的回滚,并对操作数据库的行为提供统计和审计功能。
从整体上来看,Arkit的架构非常简单。Arkit Server只是在一个MySQL Server中安装Arkit插件即可。
在客户端程序提交任务之后,Arkit会将这个任务分发给审核线程。
审核线程通过语法分析、语义分析,找到语句中的所有信息,将相关的库表信息从线上MySQL中获取过来,根据表结构及Arkit的配置参数进行逐个审核。
如果配置了要自动执行这个任务的话,Arkit会在审核成功之后去执行任务。
当任务执行完成之后,Arkit会自动将审核/执行结果存储到本地数据库中,相应的回滚语句也会被存储到后端MySQL数据库中,这个数据库专门用来存储回滚语句及任务的执行情况,用来记录每一个任务,实现对任务的审计。
客户端程序可以不断地查询information schema中的状态进度表,了解审核/执行进度。
产品特点
准确Arkit审核时,语法100%兼容MySQL原生语法,对SQL语句的分析可以做到零遗漏。
根据规则配置,将不符合配置的问题展现出来,做到语句的客观统一标准化,避免潜在问题的发生。
使用简单
Arkit是一款MySQL的插件,安装和操作标准统一。可以像操作MySQL一样操作Arkit,Arkit支持标准的MySQL链接和SQL语法,并在此基础上适当扩展了相应的Arkit 操作命令,操作非常简单。
实时状态查询
Arkit包含了多个information schema状态表,在安装之后,就可以在information schema库中看到以arkit开头的表,并且了解其表结构,通过编写相应的SQL语句就可以详细了解任务的执行状态了。
持久化
在任务执行完成之后,Arkit会将执行结果以结果集的方式,存储到本地数据库arkit中,表名为arkit_feedback,从这个表中就可以详细了解到某一个任务的执行/审核情况。
批量提交
在向Arkit提交任务时,可以一次性提交多个语句,每一个语句最终在结果集表中是以一行数据的形式展现的。
上下文逻辑相关性
批量提交的SQL语句,从前到后支持上下文逻辑相关性,可以做到先创建某个数据库,然后使用它,然后再创建一个表,最后初始化这个表,Arkit会准确无误地为你找到所有问题。
结果集
在任务执行完成之后,Arkit会将提交的批量语句一条条地分开,每一条SQL语句,作为最终结果集的一行数据存储到本地数据库中。这条记录中存储了这条语句的所有相关信息,包括任务号、语句、错误分级、错误信息、影响行数、备份库名表名、执行时间、语句类型等。存储信息非常丰富,让DBA更准确地把握任务状态。
一键回滚
在任务执行之后,所有被影响的数据的回滚语句都被存储到了后端备份数据库中,如果此时发现执行有误,可以通过结果集中的备份库名表名找到相应的回滚语句,然后反向执行,实现操作的回滚,保证尽可能少地影响在线数据库的服务。
语法树打印
由于SQL语句的复杂性,分析非常困难,Arkit可以将分析出来的语法树,通过JSON格式打印出来,这样语句中包含的所有信息都一目了然。
通过对JSON的分析可以自定义规则,比如limit不能设置起始点这样的规则等。
Arkit支持分析所有类型的语句,对表达式、子查询也做了详细的分析,并且将上下文关联也做了分析。
这个功能还可以用于慢查询自动化系统中,拿到慢查询之后,如何知道这个慢查询语句是对哪些表做了查询,用这个语法树打印就可以解决问题。
在线改表
Arkit内部已经支持了pt-online-schema-change的改表方案,也支持了内置的通过Binlog来获取增量修改的改表方案,两种方案可以通过任务参数来控制,不同情况可以选择不同方案来执行。同时,可以通过information schema中的osc状态表查询相应任务的执行过程,并且当在线MySQL数据库压力过大时,可以手动取消执行任务。
通用性
Arkit是一款通用型产品,没有涉及任何业务逻辑,使用起来非常方便,上层的自动化运维管理系统可以做得非常强大。
丰富参数配置
Arkit支持很多参数配置,可以定制适合自己业务线的规则。
错误分级
Arkit将审核出来的错误做了分级,因为有些错误是严重影响自动化执行的,有些错误(警告)则在某些情况下可以忽略,有了分级之后,就可以选择忽略警告继续执行,在规则之下,加入了人性化的功能。
日志打印
Arkit还支持在所在MySQL服务器的错误日志文件中,打印在运行过程、启动过程中出现的一些问题的详细信息,让管理人员时刻了解系统状态。
执行暂停
Arkit考虑到,在批量执行大量语句的时候,执行太快可能会给在线MySQL带来压力,或者造成故障,所以加入了在每条语句执行之后暂停一段时间的功能,让在线操作做到可控,避免潜在危险。
操作友好
Arkit插件只包含了三种对象:
一是配置参数,可以通过配置参数来设置任务执行的行为;
二是information schema表,可以实时了解任务执行的状态;
三是本地数据库的持久化表,用来存储任务执行完成之后的详细信息。
DDL回滚语句生成
Arkit全面支持DML操作的回滚,但由于DDL操作的不可恢复性,目前只是生成DDL语句,而不能恢复相应的数据,这样可以很便捷很准确地拿到回滚语句。
表达式类型匹配
Arkit还支持表达式比较的审核,比如一个VARCHAR类型的字符串和一个INT类型的列做比较,这样很多情况下会出问题,并且性能会很差。这种情况下,Arkit会报出列类型不匹配的问题。
应用指南
1. 申请对应版本License
请联系北京极数云舟科技有限公司技术人员申请对应License。 联系方式:15827479486(许先生) 18513418589(强先生)
2. 镜像默认安装5.7.18 版本MySQL Server 并初始化3306实例,启动MySQL 3306实例。
/etc/init.d/mysql.server -P 3306 start
3. 登录MySQL 3306实例,为了不影响语句的意义,将Arkit需要的必要的信息都以注释的方式放在语句最前面,也就是说所有这些信息都是被“/**/”括起来的,每一个参数都是通过分号来分隔,最终通过设置参数arkit_sql_statement来提交任务。
从设置的参数值来看,前面包括了要提交任务的基本信息,后面紧跟着是每条要执行或者审核的SQL语句,这样组成一个字符串之后,执行之后,就将这个任务提交了。
arkit下的表是按需创建,指定不同的excute选项创建不同表。
4.详情请查看Arkit用户手册。当前页面切换到支持服务即可下载。
全部用户
商品定价
华北-北京一