设为首页 加入收藏

TOP

MySQL数据库Inception工具学习与测试 笔记(二)
2019-09-17 18:29:11 】 浏览:71
Tags:MySQL 数据库 Inception 工具 学习 测试 笔记
次在审核完成后,还会继续进行。因为相同的语句在不同的时间审核可能会产生不同的审核结果(环境有可能变了),

所以有必要再做一次审核。如果审核发现了错误(而不是警告),就不会被执行,此时会提前返回告知错误;如果审核发现的是警告,

并且没有指定--enable-ignore-warnings,则有警告也不会执行。

--enable-ignore-warnings

Inception采取严格的分阶段处理方式,先对所有的语句进行审核,审核完成之后,会执行所有的语句,之后再会执行所有语句的备份操作。

在三个阶段的过渡过程中,如果审核有问题则不会继续进行,此时如果人为确定想要跳过这些警告,则可以选择这个参数,

告诉Inception跳过这个警告的检查,继续执行。

--enable-force

批量导入时,有可能会报主键冲突的问题,而DBA可以确定的是,出现主键冲突不是问题,可以继续执行,那么此时可以通过选项

--enable-force告诉Inception,在执行过程中碰到一个错误时,可以先保存错误信息并继续下一条语句。此参数需谨慎使用。

--enable-remote-back

Inception支持备份并生成对应的回滚语句,这是默认的,但当有些影响行数很多且明确不需要回滚的时候,为了提高执行效率,

可以指定在执行时不做备份,指定方式是通过disable来禁用它,即disable-remote-backup。

--enable-split

这个参数用来拆分要执行的语句块。如果在语句块中存在对同一个表的DDL操作和DML操作,那么在分析Binlog来生成回滚语句时,

由于表结构已经发生改变,会导致Inception没有办法处理,所以使用这个参数将这些语句分成多批,然后再分别执行。这是在执行前

必须要做的一个操作,不然可能会产生不可预知的错误。当然在执行前的最后一次审核中,如果检查到这样的混用情况,

则会返回报错,而不是警告。

--enable-query-print

这个参数用来打印SQL语句在被Inception分析之后的执行树结构,已JSON的形式提供,目的是为了可以在Inception的基础上,

对已经结构化的(JSON)语句再次分析,可以对Inception内置支持的规则进行扩展,做个性化定制,比如使用到哪些列、

哪些语句类型等信息。

2.7 Inception结构集导读

返回列 详细描述
ID  用来表示结果集中记录序号的,也就是被审核的语句在语句块中的序号,按位置排序,计数从1开始。
stage

 显示当前语句已经进行到哪一步了,包括四个值:CHECKED、EXECUTED、RERUN和NONE。CHECKED表示这个语句只做审核,而没有再进行下一步操作;EXECUTED表示已经执行过,

如果执行失败,也是用这个状态表示,RERUN表示的是,对于影响上下文的语句,已经执行成功了,但是为了与EXECUTED区分,用RERUN表示,主要是因为在执行过程中,如果某一条语句

执行失败了,则上层可能需要将没有执行的语句提取出来,再次执行,那么影响上下文的语句就是需要加上的,所以用RERUN来表示。Inception目前支持两种影响上下文的语句,分别是

set names charset 语句和use database语句。NONE表示没有做过任何处理,有可能前面有语法错误直接提前返回。 

errlevel

 总共有三个值,分别是0、1、2。如果为0,则说明当前语句审核没有任何问题;如果为1,则说明当前语句审核时发现有些写法不符合Inception定义的内置规则,属于警告;如果值为2,则说明

当前语句审核时,发现了严重错误,无论如何都不能通过的。

stagestatus

 该列用来描述当前语句的阶段结果,与列stage对应。如果是审核阶段,并且完成,则返回Audit completed。如果是执行阶段,并且执行成功则返回Execute Successfully,否则返回Execute

failed。如果是备份阶段,并且备份成功,则在执行描述信息后面追加Backup successfully,否则追加Backup failed。

errormessage

 用来表示出错的错误信息,这里包括一条语句中的所有错误信息,用换行符分隔,但有时候如果某一个错误导致不能继续分析了,比如表不存在等问题,在这种情况下,如果语句还有其他错误,

就不能被审核出来了。如果当前语句没有任何错误,则这个列值为NONE。对于执行及备份操作,因为对于一条语句,这样的错误只会有一次,那么执行错误会在执行后面追加:“execute:具体

的执行错误原因”,如果是备份出错,则在后面追加“backup:具体的错误原因”。在执行时,有时候还会出现Warning。

SQL  用来表示当前检查的是那条SQL语句,这一列存储的值就是这条SQL语句的文本内容。
affected_rows  审核时,用来表示当前语句预计影响的行数,这个行数一般是通过EXPLAIN来获取的。在执行时,该列输出的是执行时真实影响的行数。
sequence  该列与Inception备份功能有关,其实就是与$_$Inception_backup_information$_$表中的列opid_time一一对应,这就为自动化运维平台针对某一条语句做回滚操作找到了入口。
backup_dbname  该列表示的是当前语句产生的备份信息,存储在备份服务器的那个数据库中。如果是不需要备份的语句,则返回字符串NONE。
excute_time  该列表示当前语句的执行时间,单位是秒,精确到小数点后两位。列类型是字符串。如果只是审核而不执行,则该列返回的值为0.
SQLSHA1  这一列用来存储当前这条语句的一个HASH值,用来标识这个语句是否会使用OSC功能,如果返回信息中有值,则表示这条语句在执行时会使用OSC。

 

3.Inception 备份功能

Inception在做DML操作时,具有备份功能。它会将所有当前语句修改的行对应生成回滚语句并备份下来,同时也会将所有操作的任务备份下来,一起存储到一个指定的库中。

3.1 配置项中关于备份主要有4个参数

参数 说明
inception_remote_backup_host 指定远程备份MySQL实例的地址。
inception_remote_backup_port 指定远程备份MySQL实例的端口。
inception_remote_system_user 备份时,连接备份MySQL实例时所需的用户名,这个用户需要有相应的权限,一般包括Create、Insert和Select权限。
inception_remote_system_password 备份时,连接备份库时所需要的用户对于的密码。

3.2 备份数据库命名规则

因为线上机器有很多,而备份机器只有一台,所以为了防止在备份数据库实例中存在库名冲突的问题,备份机器

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle 分页查询与数据去重 下一篇DDL(数据定义语言)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目