近日,51CTO将举办WOT互联网运维与开发者峰会,记者在会前专访了本次大会数据库技术与应用专场的重要讲师翁宁龙,他此次分享的主题是《美团数据库自动化运维系统 》。美团数据库目前机器数大约1300台(包括mysql、redis、mongo)、mysql的日均流量约9亿、数据库中间件的线上使用比率80%+、mysql 5.6+GTID的线上使用比率70%+、DBA日常操作的自动化率达到50%+。面对这样一串可观的数据,不得不让我们对美团数据库的运维产生好奇。接下来,让我们随着翁宁龙走近美团数据库自动化运维系统,进一步了解。
【受访人简介】
翁宁龙· 美团网高级DBA
翁宁龙,2015年6月加入美团网,目前负责美团网数据库自动化相关的架构设计以及开发工作。2012年,东北大学研究生毕业加入百度从事数据库自动化相关的设计、开发工作,参与了分布式数据库、私有云数据库以及公有云数据库的相关设计、开发。
美团数据库自动化运维系统初期架构及后期的演进
翁宁龙在采访中表示,美团自动化运维系统初期仅支持在线的DDL操作、数据库账户申请操作以及数据库相关集群信息查询操作。初期架构,前端将用户相关的操作信息以任务的形式记录在数据库中,服务端有常驻内存的模块去数据库中取任务、操作并进行相关元信息的修改工作。美团自动化运维系统初期的功能比较单一,整个系统缺乏高可用、高性能等方面的设计。
如上图所示,为当前美团自动化运维系统的架构设计:
- 用户在前端所有的数据请求都通过API层获取,所有的操作都通过API层提交;API层除了系统使用外,还为公司其他团队提供方便的接口化、服务化支持。
- 用户的所有请求都由任务管理模块进行消费,任务管理模块获取任务之后,找到对应的任务执行者,将任务抛给任务执行者,即反馈前端任务提交成功。
- 任务执行者托管于OS,负责单元任务的执行,并将执行过程中相关的数据记录在数据库,展示到前端,方便用户查看任务进展情况,任务执行结束,任务单元退出。
美团数据库自动化运维系统支持的功能展示
如上图所示,美团数据库自动化运维系统现在主要支持的功能包括:
- 总览:查看数据库集群的实时情况,相关报警信息,慢查询等
- 工单:方便RD提交数据库问题,引导RD进行问题解决
- 系统公告&***动态:发布数据库相关的重大变更、***通告等
- 初始化:新集群的搭建工作(包括mysql和中间件)
- 扩容:给数据库扩容从库
- 数据库创建:建库&添加账号
- 自助表变更:在线的DDL和DML
- 备份管理:数据库集群的备份相关的操作
翁宁龙表示,除了上述功能之外,还有checksum管理、中间件管理、历史、实时processlist查看、历史innodb status查看、SQL评审等。
美团数据库自动化运维系统开发过程中踩过的坑
当问及美团数据库自动化运维系统在开发过程中遇到哪些问题,又如何应对时,翁宁龙从开发流程和功能具体实现两方面来举例:
针对开发流程来说,开发出来的功能与运维DBA预期不符合
应对:数据库自动化的需求来源:运维DBA平时运维工作中的痛点,通过运维DBA投票的方式决定自动化相关功能的开发;功能先进行原型设计,必须要有运维DBA参与其中;功能开发过程中与运维DBA常沟通,开发完成需要至少2个运维DBA测试OK没问题才能上线;上线之后,DBA有任何使用不舒服的地方,随时跟进修改
针对具体功能实现来说,任务中途失败造成的手动回滚
应对:由于数据库操作很多功能没有办法方便得回滚,所以需要手动回滚,如果失败率高的话,就会给运维DBA带来额外的工作;所以在所有功能上必须加上详细的前置检查和后置检查工作,在操作环境不正确的情况下,直接给运维DBA报错,而不是流程走到一半出错退出。
在采访***,翁宁龙分享了开发过程中总结的三条宝贵经验,供大家参考借鉴:其一,要与运维DBA和RD保持沟通,明确了解需求;现在可以通过工单的方式,统计最需要的功能。其二,用户在使用的过程中,有什么不舒服的地方,如果修改量不大的话,应该立即修改,因为这样的小需求会很多,但是能够解决大问题。其三,高可用、高性能、高扩展的系统设计,方便运维DBA参与到开发中来,提升开发效率。