数据库审核之平台使用篇

文/tuteng 2017-08-17 18:00:00

简介

上一篇安装篇已经介绍了平台的安装,这一篇就以mysql为例说明如何对数据库进行审核
针对数据库的审核从四个维度进行,对象、执行计划、执行特征、文本。

开始配置

首先在美团云的操作界面的数据库一栏申请一台mysql5.6或者mysql5.7的机器,设置好账号与密码
等数据库启动了,就可以在settings.py进行如下配置,需要对多台实例审核就配置多个条目为目标需要被审核的机器的信息

MYSQL_ACCOUNT = {
    "ip1:port": ["mysql", "username", "password"],
    "ip2:port": ["mysql", "username", "password"]
}

账号应该有select所有表的权限

配置好以上之后,重启服务

supervisorctl -u username -p password reload

这样我们就可以进行对数据库对象进行审核了 为了测试方便,我提前在审核的目标数据库里加了一些测试数据

审核对象

在浏览器中打开http://ip:7000

rule 发布任务

选择上边的发布任务,再选择下边的ip地址,端口号,schema等即可发布任务 然后就可以在任务详情里查看任务的执行结果,如下图

rule 对象审核总分

rule 对象扣分详情

配置pt-query-digest

mysql数据库的审核没有针对所有的sql,而是预先使用pt-query-digest工具将较慢的sql抓取出来保存,后面只分析这些较慢的sql

wget percona.com/get/pt-query-digest
chmod +x pt-query-digest

从美团云上将慢查询日志拉取下来,使用pt-query-digest工具将其导入到mysql中,这一步可以做成crontab,定期拉取,这里是为了测试

./pt-query-digest --user=username --password=password --review h=127.0.0.1,D=slow_query_log,t=global_query_review --history h=127.0.0.1,D=slow_query_log,t=global_query_review_history --no-report --limit=0% --since=17h --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}='ip:port' and \$event->{client}=\$event->{ip}" slow.log

根据实际情况配置好上面的机器地址,端口号,账号和密码,hostname后的ip:port需要配置成目标机器的ip和端口,这唯一的确定了一个实例

执行计划审核

发布任务同对象审核,结果如下:

rule 执行计划总扣分

rule 执行计划扣分详情

rule 执行计划扣分规则

文本审核

文本的审核主要是针对sql语句,如sql过长,嵌套太多子查询等,审核结果如下

rule 文本审核结果,包括sql的checksum,SQL语句等

执行特征审核

规则较少,就不展示了,使用方法同上

总结

使用该平台可以帮助开发人员或者dba快速的发现sql的质量问题,提升工作效率

知识共享许可协议
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

最新文章 全部