# goInception 更新日志
# [v1.2.5] - 2021-10-31
# Fix
- 修复gh-ost的ghost_initially_drop_socket_file 参数不生效的问题 (#382)
- 修复索引前缀中文英文不一致的问题 (#380)
- 修复受影响行数可能溢出的问题 (#375)
- 修复bit类型默认值设置为NULL时无法审核通过的问题 (#346)
- 修复pt-osc连接非3306端口时执行失败的问题 (#335)
- 修复tidb v4.0版本dml无法审核的bug
- 修复dml回滚语句未忽略计算列的问题(#324)
- 修复rename table语法一次修改多个表名时,有表名逻辑上不生效的问题 (#327)
# New Features
- 新增
check_identifier_lower
参数,用于打开表名、列名、索引名小写需求 (#389) - 添加
masking功能
-语法树解析功能升级,返回select涉及的对象(库.表.列) (#355) - 添加ghost_bin_dir参数设置来自切换gh-ost模式,
独立gh-ost模块
,采用binary方式调用以优化ddl高并发且kill gh-ost进程时可能出现的bug (#334) - 添加选项
max_execution_time
设置会话级DML语句的最大执行时间 (#319) - 添加
enable_any_statement
选项以支持所有语法均可执行 (#301)
# Update
- 优化alter table修改列子句的关键字审核逻辑 (#392)
- 优化group by子句审核逻辑 (#385)
- 添加datetime小数秒校验 (#369)
- 添加视图对union的支持
- 微调严格模式下的insert列值检查逻辑
- 优化字符类型长度审核逻辑
- 优化数据库连接超时时的处理(#306)
- 完善字符集和排序规则审核逻辑,添加utf8mb4_0900_ai_ci排序规则支持
# [v1.2.4] - 2020-12-19
# Fix
- 修复MariaDB可能出现dml未备份成功的问题
- 修复update指定表别名时审核错误的问题 (#249)
- 修复select列中子查询可能找不到父表列和having子句可能找不到列的问题 (#266)
- 修复未按正确格式调用时误报error的问题
- 修复
inception set
语法指定float类型参数会报错的问题 (#279) - 修复未正确解析备份语句时的状态标计 (#286)
# New Features
- 添加lock_wait_timeout,控制普通SQL 执行时的锁等待超时时间 (#224)
- 增加 pt-osc 的 sleep 参数,以优化低配 db 执行 ddl 变更时的负载情况 (#260)
- 添加视图支持 (#238,#262)
- 添加参数
ignore_osc_alter_stmt
配置强制忽略osc检查的语法 (#258,#263) - 添加CREATE TABLE AS SELECT语法支持 (#246,#264)
- 添加tidb列属性auto_random支持 (#270)
- 增加 inc 执行时设置 sql_mode 选项 (#267)
- insert时添加非法日期审核 (#277)
# Update
- 优化索引可见性审核对于多版本数据库的支持 (#247)
- 优化备份功能的binlog解析 (#250)
- 完善MySQL8.0关键字列表 (#210)
- 优化默认数据库的配置,指定--db选项后可省略use操作
- 优化osc进程处理逻辑,添加并发锁处理
- 完善alter table表分区语法 (#281)
- 优化当开启ssl时的备份功能处理 (#287)
# [v1.2.3] - 2020-05-22
# Fix
- fix: 修复pt-osc在获取表锁卡住时无法kill的问题 (#213, #222)
# New Features
- 添加参数
ignore_sighup
,默认忽略终端连接断开信号 (#195) - 添加
osc_lock_wait_timeout
参数, 控制pt-osc等待meta lock时间,默认60s (#214, #215) - 支持多个自定义索引前缀 (#204)
# Update
- 完善MySQL5.7关键字列表 (#210)
# [v1.2.2] - 2020-04-04
# Fix
- 修复
max_char_length
未指定时误审核的问题 - 修复索引列长度限制不准确的问题 (#176)
- 修复inception set命令返回错误的问题,修复lang设置可能不生效的问题
- 修复在开启事务时,DDL和DML混合执行时可能出错的问题 (#182)
# New Features
- 添加会话级变量设置 (#157, #166, #167)
- 添加osc参数
osc_max_flow_ctl
,以便PXC集群启用pt-osc功能 (#170, #172) - 添加审核项
columns_must_have_index
, 指定列必须添加索引 (#174, #175)
# Update
- 优化列的字符集和排序规则审核逻辑 (#173)
- 添加where条件中的值表达式审核,避免无效表达式误更新 (#178)
- 优化鉴权失败时打印部分须特权执行的内部SQL,以便问题快速定位
# [v1.2.1] - 2020-03-07
# Fix
- 优化使用pt工具时ALTER语句前后的注释可能导致其解析失败的问题
# New Features
- 系统变量中添加版本号信息
show variables like 'version'
(#164)
# Update
- 在开启获取真实受影响行数参数时,忽略sql指纹功能(准确性优先)
- 自动移除每行SQL行首行尾的特殊空格(ASCII码160)
- 优化bit类型默认值审核,现已支持如
b'1'
的审核 - 优化未正确配置数据源时的错误提示,使之更友好
- 缓存建表时唯一键的设置
- 完善数值类型的显示宽度审核 (#162)
# [v1.2.0] - 2020-01-18
# Fix
- 修复change column修改列名并立即引用旧列名时未正确审核的bug (#150)
- 修复使用year类型错误长度时未正确审核的问题
- 修复join语法ON子句审核逻辑不正确的问题
# New Features
- 表名和索引名前缀自定义 (#149)
- 表名前缀
table_prefix
, 默认为空,即不限制 - 索引前缀
index_prefix
,默认为idx_
,和之前版本保持一致,可自定义 - 唯一索引前缀
uniq_index_prefix
,默认为uniq_
,和之前版本保持一致,可自定义
- 表名前缀
# Update
- 优化使用pt工具时的alter子句解析
- 优化gh-ost和备份功能的日志输出,调整为统一格式
- 优化默认数据库的参数设置,由默认
mysql
库调整为默认为空,以避免特殊情况下影响主从同步
# [v1.1.6] - 2020-01-02
# Fix
- 修复timestamp类型开关审核不正确的问题
- 修复实例未开启autocommit时DML操作未正确提交的bug (#146)
# New Features
- 添加用户鉴权模块,实现用户管理,安全连接功能 (#132)
- 添加事务支持(批量执行) (#135)
# Update
- 优化列类型变更审核 (#121)
- 实现update set多表时的回滚支持 (#112,#136)
- 优化区分大小写时的审核规则 (#123)
- 优化使用pt-osc工具时的alter子句拆分逻辑 (#142)
# [v1.1.5] - 2019-12-09
# Update
- 优化对象名大小写审核逻辑
- 优化索引长度审核准确性
- 支持update多表更新语法(暂不支持多表回滚) (#112)
- 优化sql语法解析失败时的错误信息
# [v1.1.4] - 2019-11-21
# Fix
- 修复非空字段insert时对自增列的处理 (#113)
- 修复alter table rename语句的回滚SQL生成错误问题
- 修复在开启
real_row_count
选项时,DML转select count时未处理limit的问题 (#119)
# New Features
- 添加新参数
hex_blob
,以支持回滚时解析二进制类型 (#118)
# [v1.1.3] - 2019-11-13
# Fix
- 修复表内有text,json等[]byte类型字段时最小化生成回滚语句panic的问题 (#105,#107)
- 修复
decimal
类型逆向解析时变为科学计数法形式的问题 (#106,#108) - 修复多线程高并发测试时解析调用参数出现线程安全问题的bug (#103)
# New Features
- 添加审核选项
check_implicit_type_conversion
,审核where条件中的隐式类型转换 (#101)
# Update
- 添加TiDB数据库判断(不支持tidb备份)
- 添加未指定表前缀时的字段歧义审核
# [v1.1.2] - 2019-10-30
# Fix
- 修复线程号超出uint32范围时无法备份的问题
# New Features
- 添加设置参数
enable_minimal_rollback
, 用以开启最小化回滚SQL设置 (#90) - 添加设置参数
wait_timeout
, 用以设置远端数据库等待超时时间,默认为0,即保持数据库设置 - 添加mysql安全连接参数设置
--ssl
等, 可配置SSL或CA证书验证 (#92)
# [v1.1.1] - 2019-10-13
# Fix
- 修复TiDB数据库explain出错的问题 (#86)
- 修复
insert select
语法在有删除列时列数校验可能不准确的问题
# New Features
- 添加审核选项
explain_rule
,用以设置explain获取受影响行数方式
# Update
- 完善
spatial index
审核规则 - 调整update语法均进行逻辑审核
- 添加join语法的ON子句审核
- 优化delete审核规则,有新表时跳过explain审核
- 远程数据库无法连接时,优化返回结果,添加sql内容返回
# [v1.1.0] - 2019-9-7
# Fix
- 修复add column操作未命中
merge_alter_table
检测的问题 (#79)
# New Features
- 添加空间类型语法解析,添加空间索引支持
- 添加新的调用选项
--db
,用以设置默认连接的数据库,默认值为mysql
# Update
- 支持建库时同时创建表等操作 (#77)
- 优化DDL回滚细节,对alter table多条子句调整回滚SQL为逆向 (#76)
- 在执行前添加数据库只读状态判断
- 优化索引总长度审核,现在基于目标库
innodb_large_prefix
参数判断 - 审核select语法中的星号列
- 优化多语句拆分解析逻辑,优化分号末尾但未结束的SQL解析
- 完善列定义中的索引校验
# [v1.0.5] - 2019-8-20
# Fix
- 修复insert values子句不支持default语法的问题
# New Features
- 添加参数
default_charset
用以设置连接数据库的默认字符集,默认值utf8mb4
(解决低版本不支持utf8mb4的问题) - 添加pt-osc参数
osc_check_unique_key_change
, 设置pt-osc是否检查唯一索引,默认为true
# Update
- 优化回滚功能,添加binlog_row_image设置检查,为minimal时自动修改会话级别为full
# [v1.0.4] - 2019-8-5
# New Features
- 添加set names语法支持 (#69)
# Update
- 优化主键索引审核信息 (#67)
- 完善
update set
多字段审核规则,为set多列and语法添加警告 - 优化gh-ost socket文件名生成规则,避免长度溢出导致创建失败
- 完善外键审核规则 (#68,#70)
# [v1.0.3] - 2019-7-29
# Fix
[gh-ost]
修复gh-ost在异常时没有断开binlog dump连接的问题[gh-ost]
修复gh-ost当添加datetime列且默认值current_timestamp时,增量数据因时区导致数据错误的问题(timestamp列是正常的)
# New Features
- 添加参数
enable_change_column
,设置是否支持change column语法 - 添加调用选项
real_row_count
,设置是否通过count(*)
获取真正受影响行数.默认值false
# Update
- 添加pt-osc执行change column的审核,禁止多条change column操作,以免数据丢失 (pt-osc bug)
# [v1.0.2] - 2019-7-26
# Fix
- 修复
alter table
命令没有其他选项时能正常通过的bug (#59) - 修复跨库操作时可能出现备份记录写错备份库的问题
# New Features
- 添加参数
max_ddl_affect_rows
,设置DDL允许的最大受影响行数,默认为0
,即不限制 - 添加参数
check_float_double
,为 true 时,警告将 float/double 转成 decimal 数据类型。 默认为 false (#62) - 添加参数
check_identifier_upper
,限制表名、列名、索引名等必须为大写,默认为false
(#63)
# Update
- 优化自定义审核级别实现,移除参数
enable_level
,现在自定义审核级别和审核开关设置合并 (#52) - 升级parser语法解析包,优化列排序规则和分区表语法支持 (#50)
- 优化gh-ost的server_id设置自动变化,避免同一实例重复
# [v1.0.1] - 2019-7-20
# Fix
- 修复
must_have_columns
参数列类型的大小写兼容问题
# New Features
- 添加
alter table rename index
语法支持 - 添加参数
enable_zero_date
,设置是否支持时间为0值,关闭时强制报错。默认值为true
(#55) - 添加参数
enable_timestamp_type
,设置是否允许timestamp
类型字段 (#57) - 添加
mysql 5.5
版本审核支持 (#54)
# Update
- 优化modify column列信息逻辑保存
- 优化列属性的键定义逻辑保存
# [v1.0] - 2019-7-15
# Fix
- 修复密码中包含特殊字符时pt-osc执行出错的问题
# New Features
- 添加审核结果级别自定义功能 (#52)
# Update
- 添加delete/update自连接审核支持 (#51)
- 优化binlog回滚时指定的server_id自动变化,避免同一实例重复
# [v1.0-rc4] - 2019-7-9
# Fix
- 修复pt-osc可能出现执行成功时但进度不到100%的问题 (#48)
# New Features
- 增加enable_set_engine、support_engine参数,控制是否允许指定存储引擎以及支持的存储引擎类型 (#47)
# Update
- 优化osc的进程列表,同一会话的osc进程信息延后清除(在会话执行返回后) (#48)
- 优化备份库库名生成逻辑,库名过长时自动截断 (#49)
- 优化delete和update别名审核 (#51)
# [v1.0-rc3] - 2019-7-2
# Fix
- 修复使用osc做DDL变更时可能不支持的问题(如
alter table t engine='innodb'
)
# New Features
- 添加sleep执行等待功能,降低对线上数据库的影响 (#46)
- 调用选项
sleep
,执行sleep_rows
条SQL后休眠多少毫秒,以降低对线上数据库的影响 - 调用选项
sleep_rows
,执行多少条SQL后休眠一次
- 调用选项
- 添加参数
max_allowed_packet
以支持更长的SQL文本 - 添加参数
skip_sqls
以兼容不同客户端的默认sql
# Update
- 调整备份记录表sql_statement字段类型为mediumtext,并自动兼容旧版本的text类型
- 兼容mysqlclient客户端
# [v1.0-rc2] - 2019-6-21
# Fix
- 优化回滚相关表结构,字符集调整为utf8mb4 (
历史表结构需要手动调整
)
# Update
- 优化审核规则,审核子查询、函数等各种表达式 (#44)
- 优化gh-ost默认生成的socket文件名格式
- 优化日志输出,添加线程号显示
- binlog解析时添加mariadb判断
# [v1.0-rc1] - 2019-6-12
# New Features
- 添加split分隔功能 (#42)
# [v0.9-beta] - 2019-6-4
# New Features
- 添加统计功能,可通过参数
enable_sql_statistic
启用 (#38) - 添加参数
check_column_position_change
,可控制是否检查列位置/顺序变更 (#40, #41)
# Update
- 优化使用阿里云RDS和gh-ost时的逻辑,自动设置
assume-master-host
参数 (#39)
# [v0.8.3-beta] - 2019-5-30
# Fix
- 修复gh-ost的initially-drop-old-table和initially-drop-ghost-table参数支持
- 修复设置osc_min_table_size大于0后无法正常启用osc的bug
# Update
- 兼容语法inception get processlist
- docker镜像内置pt-osc包(版本3.0.13)
# [v0.8.2-beta] - 2019-5-27
# Fix
- fix: 修复binlog解析时对unsigned列溢出值的处理
- fix: 修复gh-ost执行语句有反引号时报语法错误的bug (#33)
- fix: 修复kill DDL操作时,返回执行和备份成功的bug,现在会提示执行结果未知了 (#34)
# [v0.8.1-beta] - 2019-5-24
# Fix
- 修复新建表后,使用大小写不一致的表名时返回表不存在bug
# New Features
- 添加general_log参数,用以记录全量日志
# Update
- 优化insert select新表的审核规则,现在select新表时也可以审核了
# [v0.8-beta] - 2019-5-22
# Fix
- 修复当开启sql指纹功能时,可能出现把警告误标记为错误的bug
# Update
- 优化子查询审核规则,递归审核所有子查询
- 审核group by语法和聚合函数
# [v0.7.5-beta] - 2019-5-17
# Fix
- 修复执行阶段kill逻辑,避免kill后备份也中止
# New Features
- 添加select语法支持
- 添加alter table的ALGORITHM,LOCK,FORCE语法支持
# Update
- 优化update子查询审核
# [v0.7.4-beta] - 2019-5-12
# New Features
- 添加alter table表选项语法支持 (#30)
- 重新设计kill操作支持,支持远端数据库kill和goInception kill命令 (#10)
# [v0.7.3-beta] - 2019-5-10
# Fix
- 修复在开启备份时,执行错误时偶尔出现的误标记执行/备份成功bug
# New Features
- 添加
check_column_type_change
参数,设置是否开启字段类型变更审核,默认开启
(#27)
# Update
- 实现insert select * 列数审核
# [v0.7.2-beta] - 2019-5-7
# New Features
- 添加
enable_json_type
参数,设置是否允许json类型字段 (#26)
# Update
- 实现基于系统变量explicit_defaults_for_timestamp的审核规则
- 优化osc解析,转义密码和alter语句中的特殊字符
# [v0.7.1-beta] - 2019-5-4
# Update
- 优化json类型字段处理逻辑,不再检查其默认值和NOT NULL约束 (#7, #22)
- 优化must_have_columns参数值解析
- 优化insert select审核逻辑
# Fix
- 修复和完善add column(...)语法支持
- 修复开启osc时,alter语句有多余空格时执行失败的bug
# New Features
- 添加
enable_null_index_name
参数,允许不指定索引名 (#25) - 添加语法树打印功能(beta) (#21)
# [v0.7-beta] - 2019-4-26
# Update
- 优化update关联新建表时的审核,现在update时可以关联新建表了
- 优化insert 新建 select语法审核,现在可以获取预估受影响行数了
- 审核阶段自动忽略警告,优化审核逻辑
- 优化
check_column_default_value
的审核逻辑,默认值审核时会跳过主键 - 备份阶段sql过长时会自动截断(比如insert values很多行),
返回警告但不影响执行和备份操作
# Fix
- 修复开启
enable_pk_columns_only_int
选项时列类型审核错误的问题
# New Features
- 添加
enable_set_collation
参数,设置是否允许指定表和数据库的排序规则 - 添加
support_collation
参数,设置支持的排序规则,多个时以逗号分隔
# [v0.6.4-beta] - 2019-4-23
# Fix
- 修复mysql 5.6和mariadb无法获取受影响行数的问题
# [v0.6.3-beta] - 2019-4-22
# New Features
- 添加
max_insert_rows
参数,设置insert values允许的最大行数。 - 添加
must_have_columns
参数,用以指定建表时必须创建的列。多个列时以逗号分隔(格式: 列名 [列类型,可选]
)
# [v0.6.2-beta] - 2019-4-18
# Update
- 添加不支持的语法警告(create table as和create table select)
- 实现alter多子句时的表结构变化支持,如drop column后跟add column
# Fix
- 修复explain返回null列时报错的问题
- 修复索引的唯一标识设置错误问题
# [v0.6.1-beta] - 2019-4-9
# Update
- 添加远端数据库断开重连机制,优化线程号和master status查询速度
- 优化远端数据库访问操作
- 优化sql内容解析,移除多余分号和空格
# Fix
- 修复跨库update时无法找到列的问题
- 修复osc子句有双引号时执行错误的问题
# New Features
- 添加sql指纹功能
dml语句相似时,可以根据相同的指纹ID复用explain结果,以减少远端数据库explain操作,并提高审核速度
- 可以通过
inception set enable_fingerprint=1;
或配置文件开启全局配置 - 也可以通过调用选项
--fingerprint=1;
开启单个配置 - 两种配置取并集,即开启任一配置,则启用sql指纹功能,默认关闭。
- 可以通过
# [v0.6-beta] - 2019-4-3
# Update
- 备份操作性能优化,备份信息改为批量写入
- 添加备份库连接超时检查
- explain函数性能优化
- 优化部分函数未指定架构名时的默认处理
- 优化默认值检查,添加计算列支持 (#12, #13, #14)
- 优化时间格式和范围检查,根据数据库sql_mode校验零值日期
- 升级到go 1.12
# Fix
- 修复index name校验逻辑,其可与列名一致
- 修复timestamp默认值校验不准确的问题
# New Features
- 添加kill功能支持,在审核和执行时可以kill,备份阶段无法kill (#10)
- 添加
check_timestamp_count
参数,可配置是否检查current_timestamp数量 (#11, #15)
# [v0.5.3-beta] - 2019-3-25
# Update
- 变更列名时使用逻辑校验,避免explain update失败
- 添加union子句校验
- 添加表名别名重复性校验
# Fix
- 修复update set子句指定表别名时校验问题
- 修复自增列校验问题
- 修复default value为表达式时的校验问题
# [v0.5.2-beta] - 2019-3-17
# Update
- 优化主键NULL列审核规则(审核
DEFAULT NULL
) - 优化索引总长度校验,根据列字符集判断字节数长度
- 优化DDL备份对默认值的处理
# [v0.5.1-beta] - 2019-3-14
# Update
- 优化option解析规则,密码兼容特殊字符
- 优化语法解析失败时返回的sql语句
- 添加中文的异常和警告信息
- 添加新的参数
- lang 设置返回的异常信息语言,可选值
en-US
,zh-CN
,默认en-US
- lang 设置返回的异常信息语言,可选值
# Fix
- 修复mariadb备份警告信息重复的问题
# [v0.5-beta] - 2019-3-10
# Update
- 兼容mariadb v10版本的备份兼容(高并发时回滚语句可能有误,须注意检查)
- 更新pt-osc部分参数名,使其与inception保持一致
- osc_critical_running -> osc_critical_thread_running
- osc_critical_connected -> osc_critical_thread_connected
- osc_max_running -> osc_max_thread_running
- osc_max_connected -> osc_max_thread_connected
- 隐藏gh-osc部分未使用参数
- 添加是否允许删除数据库参数
enable_drop_database
- 优化系统变量variables显示和设置
- 调整部分参数默认值
- ghost_ok_to_drop_table
true
- ghost_skip_foreign_key_checks
true
- osc_chunk_size
1000
- ghost_ok_to_drop_table
# Fix
- 修复json列校验异常问题 (#7)
# [v0.4.1-beta] - 2019-3-6
# Update
- 兼容mariadb数据库(v5.5.60)
- 添加mariadb的binlog解析支持(测试版本v5.5.60,v10版本由于binlog格式改变,暂无法解析thread_id)
- 优化备份失败时的返回信息
# [v0.4-beta] - 2019-3-5
# New Features
- 添加gh-ost工具支持
- 无需安装gh-ost,功能内置(v1.0.48)
- 进程列表
inception get osc processlist
- 指定进程信息
inception get osc_percent 'sqlsha1'
- 进程终止
inception stop alter 'sqlsha1'
(同义词inception kill osc 'sqlsha1'
) - 进程暂停
inception pause alter 'sqlsha1'
(同义词inception pause osc 'sqlsha1'
) - 进程恢复
inception resume alter 'sqlsha1'
(同义词inception resume osc 'sqlsha1'
) - 兼容gh-ost参数
inception show variables like 'ghost%'
# [v0.3-beta] - 2019-2-13
# New Features
- 添加pt-osc工具支持
inception get osc processlist
查看osc进程列表inception get osc_percent 'sqlsha1'
查看指定的osc进程inception stop alter 'sqlsha1'
(同义词inception kill osc 'sqlsha1'
)中止指定的osc进程
# [v0.2-beta] - 2019-1-31
# Optimizer
优化二进制构建方式,压缩安装包大小
移除vendor依赖,优化GO111MODULE使用方式
跳过权限校验,以避免登陆goInception失败
移除root身份启动校验,以避免windows无法启动
优化inception set变量时的类型校验
# [v0.1-beta] - 2019-1-25
# goInception正式发布
← 赞助&定制