近日,WOT互联网运维与开发者峰会即将召开。会前,记者采访了大会数据库技术与应用专场的重要讲师翁宁龙。本次分享的主题是《美团数据库自动化运维系统 》。美团数据库目前约1300台机器(包括mysql、redis、mongo),mysql日均流量约9亿,数据库中间件在线使用率80%+,mysql5.6+GTID在线使用率:70%+。DBA日常操作自动化率达到50%+。面对这样一串串令人印象深刻的数据,我们不得不对美团数据库的运维感到好奇。接下来,就让我们跟随翁宁龙对美团数据库自动化运维系统的走路,来深入了解一下吧。【受访者介绍】翁宁龙·美团网资深DBA翁宁龙于2015年6月加入美团,目前负责美团数据库自动化相关的架构设计与开发。2012年毕业于东北大学,加入百度从事数据库自动化设计与开发,参与分布式数据库、私有云数据库、公有云数据库的设计与开发。美团数据库自动化运维系统的初始架构及后期演进翁宁龙在接受采访时表示,美团自动化运维系统最初只支持在线DDL操作、数据库账号申请操作、数据库相关的集群信息查询操作。在初始架构中,前端将用户相关的操作信息以任务的形式记录在数据库中,服务端有一个内存驻留模块,负责从数据库中获取任务,操作和修改相关的元信息。美团自动化运维系统初期功能比较单一,整个系统缺乏高可用和高性能的设计。如上图所示,是目前美团自动化运维系统的架构设计:前端所有用户的数据请求都是通过API层获取,所有操作都是通过API层提交;API层不仅供系统使用,也供公司其他公司使用。该团队提供便捷的界面和面向服务的支持。所有的用户请求都被任务管理模块消费。任务管理模块获取任务后,找到对应的任务执行器,将任务抛给任务执行器,返回前端任务提交成功。任务执行器托管在OS中,负责单元任务的执行,并将执行过程中的相关数据记录在数据库中并显示在前端,方便用户查看任务的进度。当任务执行完成后,任务单元退出。美团数据库自动化运维系统支持的功能如上图所示。美团数据库自动化运维系统现在支持的主要功能包括:概览:查看数据库集群实时情况,相关告警信息,慢查询等工单:方便RD提交数据库问题,指导RD解决他们。SystemAnnouncements&***Dynamic:发布重大数据库相关变更,***公告等初始化:搭建新集群(包括mysql和中间件)扩容:从数据库创建扩容:建库&添加账户自己-服务表变化:在线DDL和DML备份管理:数据库集群备份相关操作翁宁龙说除了以上功能外,还有checksum管理,中间件管理,history,Real-timeprocesslistview,历史innodbstatusview,SQL回顾等美团数据库自动化运维系统开发过程中踩过的坑当被问到美团数据库自动化运维系统在开发过程中遇到了哪些问题以及如何处理时,翁宁龙从两个方面进行了阐述从开发过程和功能来说例如:对于开发过程来说,开发出来的功能没有m满足运维DBA的期望回应:数据库自动化的需求来源:运维DBA在运维工作中的痛点,自动化相关的功能由运维DBA决定投票功能的开发;必须先进行原型设计,运维DBA必须参与;功能开发过程经常和运维DBA沟通。开发完成后至少需要两个运维DBA测试OK才能上线;上线后,DBA有什么用起来不舒服的地方,随时跟进修改。具体功能实现,中间任务失败导致手动回滚:由于数据库操作的很多功能没有办法方便的回滚,所以需要手动回滚。如果故障率高的话,会给运维DBA带来额外的工作量;因此,必须在所有功能中加入详细的事前检查和事后检查工作。当运行环境不正确时,会直接报错给运维DBA。并不是进程进行到一半就报错退出了。在专访***中,翁宁龙分享了在开发过程中总结的三个宝贵经验,供大家参考:一是与运维DBA和RD保持沟通,清楚了解需求;现在您可以使用工单来统计最需要的功能。第二,如果用户在使用过程中感觉不舒服,如果修改量不大,应该马上修改,因为这样的小需求会很多,但是可以解决大问题。第三,高可用、高性能、高扩展性的系统设计,方便运维DBA参与开发,提高开发效率。
