第1页
自动化运维-SQL自动上线
董泽润@赶集网
第2页
主要内容
•DBA的职责 •我们的痛点 •我们的实践 •改进及畅想
第3页
DBA的职责-工匠
• 提升数据库单机性能 -软硬件优化
• 优化架构,应对海量数据 -分库分表中间件 -服务化,各模块解耦
• 自动化运维,提高工作效率,减少重复工作 • 高可用,做到N个9
第4页
DBA的职责-审核人员
• 数据库上线 DDL 变更 • 日常 SQL 上线 • 慢查询监控及优化 • 业务监控及拆分
第6页
我们的痛点-标准如何落地
DDL标准
RDR急线D:,!:欧 !修紧非巴!复常急~!b上紧~ug
DD标下BBA准不A:,为:…打例不恶…回符心. - 合,-!
第7页
我们的痛点-业务快速迭代
赶集二 手车
赶集好⻋车
招聘节
本地⽣生活
易洗车
放心房
第8页
我们的痛点-人员变动频繁
这是最好的时代
第9页
我们的痛点
人是最不稳定的因素
第10页
我们的实践
• 引入项目管理工具 JIRA
第11页
我们的实践-JIRA
第12页
我们的实践-JIRA
第13页
我们的实践-JIRA
•优点 -强大的任务管理与跟踪系统 -无限制的工作流
•缺点 -过于重量级 -相比较严格上线,任务描述过于模糊 -DBA 要改写不符合规范的上线
第14页
我们的实践
• 引入半自动上线系统
第15页
我们的实践-半自动
RD发起上线
SIM预执行
仍然不够理想
No Yes
成功
提交DBA
No
符合 规范
Yes DBA确认
第16页
我们的实践-半自动
•优点 -避免了 JIRA 模糊不清的表述 -SIM环境预执行,清楚的看到影响行数 -程序执行,避免潜在的人为误操作
•But -还是需要 DBA 人肉审核 -对于违规 SQL, 开发改写意愿不强 -标准得不到执行,科普成本高
第17页
我们的实践
• 针对业务特点,开发全自动上线系统
第18页
我们的实践-AutoSQL
• Python 开发 -Celery -MySQL -Redis -Yacc & Lex -Tornado
第19页
我们的实践-过滤基本原则
•对于 DML上线, where clause 必须包含主 键,唯一索引或业务区分度高的字段 •不允许做减法,drop 字段,库,表或索引操 作提交 DBA 手工执行 •有限度的自由,建库操作必须 leader 审核, 提交 DBA 手工执行 •严格遵守调度规则,禁止提前上线
第20页
我们的实践-AutoSQL
RD发起上线 SQL入库 语法解析
规则过滤
Online执行 延迟调度 备份 SIM预执行
第21页
我们的实践-DDL
DDL
SQL 结构化
Sqlparser
过滤规则
Redis
获取表行数
延迟调度
Celery
重新提交
违规
第22页
我们的实践-DDL
•字段指定 not null default xxx •所有字段,表均需要有注释 comment •所有新表,引擎只能用 innodb 或 queue •所有新表,均有自增 ID 做为主键 •按照一定比例,限制新表text字段数量 •按照一定比例,规定新表索引数量 •按照业务常识,post_id, puid, userid 均有 索引
第23页
我们的实践-DML
Redis metadata
DML
SQL 结构化
Sqlparser
过滤规则
备份
限速执行
重新提交
违规
第24页
我们的实践-DML
•不允许使用 load data •删除修改操作,where clause 必须包含主 键,唯一索引列,或是业务区分度较好列 •禁止多表 join •禁止未决 SQL, 例如 insert into select •所有 insert 建义指定字段 •所有 update / delete 建义使用绝对值,遵 循可重入原则
第25页
我们的实践-AutoSQL
第26页
我们的实践-AutoSQL
第27页
我们的实践
• 当前不包括业务 SQL 审核,如何破?
第28页
我们的实践
• 开发慢查询实时追踪系统 SQLTrack -抓住上线到转天高峰期慢 SQL -鼓励开发参与优化
第29页
我们的实践-SQLTrack
• Golang 开发 -Heka -Kafka -InfluxDB / ES -Tornado
第30页
我们的实践-SQLTrack
Heka
Statsd
SQLTrack
结构化
Heka
Kafka
命中
Cache
Influxdb
Heka
否
Explain
第31页
我们的实践-SQLTrack
第32页
我们的实践-SQLTrack
第33页
我们的实践-SQLTrack
第34页
改进及畅想
• 支持回滚功能 • 改写 SQL, 允许复杂 DML 上线 • 追踪全日志,分析 SQL 类型占比 • 将 SQLTrack 部署到代码分发流程
第35页
期待小伙伴的加入~~