SQL 审核工具 SQLE 2.2305.0 于今天发布。以下对新版本的 Release Notes 进行详细解读。文章主要分为以下三部分内容:

一、SQLE 项目介绍

二、新版本主要功能介绍

三、完整的 Release 信息

一、SQLE 项目介绍

爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。

SQLE 获取

类型 地址
版本库 https://github.com/actiontech/sqle
文档 https://actiontech.github.io/sqle-docs/
发布信息 https://github.com/actiontech/sqle/releases
数据审核插件开发文档 https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtodev
社区版在线体验 http://demo.sqle.actionsky.com 超级管理员:admin    密码:admin
企业版在线体验 http://demo.sqle.actionsky.com:8889 用户:admin    密码:admin

二、新版本主要功能介绍

[社区版]

1. 支持中止 SQL 上线操作

目前,SQLE 的 SQL 工单上线流程中,对 SQL 提交到上线的整个流程做了较好的管控,但是 SQL 上线后的异常流程未进行处理,在这些极小数场景上还需要人工干预,例如:上线 SQL 阻塞时需要手工 Kill;SQL 执行失败需要人工确认数据影响等。

本次版本新增了 SQL 上线中止的功能,SQL 上线阻塞时能够在工单界面一键中止上线操作,减少人工干预的成本,并减少故障恢复时间。后续,SQLE 也将覆盖更多的异常场景,异常后的备份回滚,异常后的再次上线。打造完美闭环流程。以下是简单的功能试用:用户进入正在上线的工单,点击中止上线按钮,在二次确认弹窗中,确认执行中止操作;

图片

此时,数据源状态将变更为上线失败,正在执行上线操作的事务将被回滚,已执行的事务将不会回滚,用户可点击数据源查看具体 SQL 的执行状态;

图片
图片

2. 支持通过 Webhook 方式通知工单状态

当用户配置了自定义 API 服务,想要在 API 服务中实时获取工单执行状态时,可在系统设置中配置 Webhook 服务。在 SQLE 中配置回调地址后,工单状态一旦发生变更,即可在 API 服务中获取状态通知信息,无需定时登录 SQLE 平台以查询结果。以下是简单的功能试用:1. 以平台管理员账户登录,进入系统设置,找到 Webhook 配置后点击修改按钮。

image.png
  1. 选择开启 Webhook 通知,并填写以下字段内容。
图片
  • Webhook url:用于工单消息推送的 API 地址;
  • 最大重试字数:默认 3 次,取值范围 0-5。如果事件推送失败,SQLE 将重新推送通知,若重试 3 次后,仍推送失败,则不再推送本次事件;
  • 最大重试间隔:默认 1 秒,取值范围 1-5。如果推送失败,将以 1s 的时间间隔重新推送;
  • token:用于标识推送方,如可填写 SQLE 用以标识是从 SQLE 推送的通知。
  1. 点击提交,保存当前 Webhook 配置。
  2. 用户可点击测试,验证 API 服务端能正常收取推送信息。
图片

[企业版]

1. 智能扫描支持从 MySQL 实例在线抓取慢 SQL

在原先的慢日志扫描任务中,创建扫描任务后,还需进入终端配置 scannerd 进程,扫描任务配置流程相对较长。本次优化使得 sqle 可以直接从慢日志表中采集数据,避免用户进入终端操作,减少用户使用慢日志扫描任务时的流程阻碍。

以下是简单的使用体验:

  1. 新建扫描任务,选择慢日志扫描,并将采集来源设为 1,通过 SQLE 直接对实例的 mysql.slow_log 表进行查询。
e226b838633b8407ce8c3c2058f0b1d8.png
  • 新增参数:采集来源
    • 若来源设为 0:该扫描任务将通过 scannerd 对 mysql-slow.log 进行采集
    • 若来源设为 1:该扫描任务将通过 SQLE 直接对实例的 mysql.slow_log 表进行查询
  1. 配置数据库实例,需要注意以下设置。
set global long_query_time=1; // 需根据实际业务调整慢查询时间阈值,此处仅供参考 set global slow_query_log=1; // 开启慢日志查询 
set global log_output='FILE,TABLE';// 开启 MySQL 的慢日志收集功能,并且确认将慢日志内容写入文件 mysql-slow.log 和表 mysql.slow_log
  1. 在数据库中执行一条慢 SQL,点击立即审核,即可查看慢日志扫描的统计信息。
图片

2. DB2 库表元数据扫描任务

数据库中库表元数据若是存在表没有注释、列名没有注释、表结构中索引不合理、缺少主键等情况,未及时处理将最终导致部分业务请求性能低下,损失实际业务流量等问题。针对这种场景,用户可使用库表元数据扫描任务,对实例的库表元数据进行实时智能扫描,帮助用户提前发现库表元数据的不合规、不合理,并提供优化建议。以下是简单的功能试用:

  1. 创建扫描任务,建立扫描任务后,SQLE 将查询结果存储,并根据用户设定的周期进行审核。
图片
  1. 用户可在扫描任务详情查看当前扫描任务采集的 SQL,点击” 立即审核 “生成扫描任务报告。

 

 

dd02fea83536d121dbcc14fd68acdbcb.png

3. DB2 Top SQL 扫描任务

TOP SQL 语句可能会导致数据库性能下降,当用户需要监察 DB2 数据库中最耗费资源的 SQL 语句,进行定期优化以提高数据库运行性能时,可使用 TOP SQL 扫描任务,进行日常监督,以确保数据库性能保持在一个良好的水平。目前采集到的 SQL 支持四个指标进行查询排序,分别是:

  • 执行次数 num_executions
  • 总执行时间 total_elapsed_time_ms
  • 平均执行时间 avg_elapsed_time_ms
  • 平均 CPU 时间 avg_cpu_time_ms

以下是简单的功能试用:1. 创建扫描任务,建立扫描任务后,SQLE 将查询结果存储,并根据用户设定的周期进行审核。

图片
  1. 用户可在扫描任务详情查看当前扫描任务采集的 SQL,点击” 立即审核 “生成扫描任务报告。
图片

4. 支持 DB2 更多审核规则

平台强化了了对 DB2 审核规则的开发,当前已支持的 DB2 审核规则分类包括 DDL 规范、DML 规范、DQL 规范、使用建议、命名规范、索引规范,用户可根据实际需求启用规则,以优化 DB2 数据源上的 SQL。

image.png

5. Oracle 支持生成回滚语句

当用户通过平台对 Oracle 数据源进行 SQL 上线操作时,如果工单上线失败,可能会导致工单内的 SQL 只执行部分而未执行其他部分。对于已经执行的 SQL,用户可能不知道如何回退操作。为此,SQLE 提供了回滚语句提示,以帮助用户回退已经执行的操作,确保数据的一致性和完整性。以下是 Oracle 数据源下的回滚语句提示效果:

image.png

6. PG 支持生成回滚语句

本期在审核环节新增了对 PostgreSQL 数据源的回滚语句支持,方便 DBA 执行线下回滚操作。以下是一个简要的示例:

图片

7. PG 的 SQL 分析支持查看建表语句

本期完善了 PostgreSQL 数据源下的 SQL 分析支持,除原有的列信息及索引信息外,新增了建表语句的展示,用户可在此查看完整的建表语句,帮助 DBA  进行 SQL 优化。以下是一个简要的示例:

用户点击审核结果栏中的分析按钮;

图片

点击表标签,查看该条 SQL 执行对象的建表语句;

图片

三、完整的 Release 信息

新特性:

  • [#1519] 支持中止 SQL 上线操作
  • [#450] 支持通过 Webhook 方式通知工单状态
  • [#1494] 新增 DB2 TOP SQL 和库表元数据智能扫描类型【企业版】
  • [#1461] 智能扫描支持从 MySQL 实例在线抓取慢 SQL【企业版】
  • [#715] Oracle 和 PostgreSQL 支持回滚语句【企业版】
  • [#706] 支持 PostgreSQL 数据源生成回滚语句【企业版】
  • [#714] 支持 PostgreSQL 数据源的 SQL 分析查看建表语句【企业版】

优化:

  • [#1508] 界面优化
  • [#1473] 添加数据源时根据数据源类型自动切换默认端口

Bug 修复:

  • [#1480] 修复被驳回的工单,操作按钮置灰,但实际还可点击的问题
  • [#1495] 修复 MySQL 审核规则 “避免使用 IN (NULL)/NOT IN (NULL) ,该用法永远非真将导致条件失效” 误触发的问题
  • [#1499] 修复工单审核结果没有显示 SQL 语法高亮的问题
  • [#1399] 修复索引有大写字母,创建工单时审核报错的问题
  • [#1463] 修复一条 MySQL 规则不能触发的问题
  • [#1360] 修复修改流程模板后,工单进度显示异常的问题