SQL审核的迭代设计方案
公众号:杨建荣的学习笔记 · 作者:杨建荣 · 发布:2018-08-16 18:09:09 · 原文链接
SQL审核对于提高DBA工作的幸福度有重大的意义,同样也对开发同学有很大的帮助,至少他们能够看到DBA体现出的直接价值,这种价值不是通过口头或者苦劳,而是通过一种类似知识库的方式体现出来。
SQL审核项目初步做了一些测试,也总结了一些工具的特点,然后在这个基础上就可以做一些定制工作了。
1.提示信息定制。
2.部署方式,采用agent的方式部署,数据库用户可以根据测试情况(只读用户)来决定是否需要统一创建
3.是否安排在slave端测试
4.定制SQL审核逻辑
5.线上环境对接和测试
6.通用查询的对接
7.自动化上线的集成和对接
1.提示信息定制
目前主要侧重于Inception的提示信息定制
2.部署方式
采用agent的方式部署,数据库用户可以根据测试情况(只读用户)来决定是否需要统一创建,目前只使用check模式
目前测试在测试环境中指定的测试实例,后续可以逐步扩大到1-2台服务器,3-4个实例
3.是否安排在slave端测试
需要提前配置数据库用户,确保slave端可测试
需要重点关注主从的延迟情况
测试3-4套主从环境
4.定制SQL审核逻辑
删除已有的不需要的审核逻辑
目前暂定为 字符集utf8mb4的逻辑可以改动
修改已有的审核逻辑
主要方向是truncate和drop操作,直接禁用
添加部分审核逻辑
主要对于alter操作的审核
5.线上环境对接和测试
对于表是否存在的判断和校验,需要开发对应的接口,直接在后端逻辑中通过调用接口判断。
在表存在的前提下,对于SQL审核的逻辑可以根据如上的定制逻辑来提示
在内部迭代测试初步成效的前提下,可以推广到平台系统中,需要对接开发相应的接口。
6.通用查询的对接
1)通用查询使用SQL Advisor的接口定制完成。
2)对于数据查询结果集的发送,需要使用对应的接口或者统一的共享存储/ftp的方式来对接。
3)通用查询优先考虑使用slave
7.自动化上线的集成和对接
SQL自动化上线预期使用PT工具来完成在线的结构变更(alter操作)。
对于数据的备份根据数据量采用对应的策略:
1)数据量较小,可以创建一个临时库来存储
2)数据量较大,需要使用mysqldump来备份,数据推送到备份机中
3)数据量大,需要做性能改进,比如变更时临时调整数据库参数,是否需要拆解数据集,预计操作时间和锁的细节。
对于复杂需求,需要通过人工审核来完成,需要逐步完善对应的规则配置。
