【51CTO.com原创稿件】数据库的运维管理是个技术活儿,需要DBA有很强的技术能力和足够的耐心。在WOT2016移动互联网技术峰会上,来自国美在线的平台运维部经理那广讲述了国美在线数据库的发展,根据生产中遇到的问题结合自身的思考与实践,通过构建数据库运维平台,解决运维过程中遇到的问题,实现资源精细化控制,提高服务交付效率,为业务的快速发展及实现业务弹性化起到支撑作用。
国美在线数据库的发展历程
那广首先从数据库架构和运维工具的变化两个方面介绍了数据库运维架构的发展。在数据库架构方面,主要经历了三个阶段:读写分离、垂直拆分和水平拆分。
读写分离阶段:国美业务创建初期,业务主要以家电为主,业务比较单一。随着业务量增大单库会出现瓶颈,比如通过读写分离或者加SSD盘解决性能上的问题,目前很火的是SSD或闪存卡,原因是现在单库存在的性能瓶颈体现在IO方面,跟内存数据库差的是在IO层面,主要是通过读写分离解决这个问题,在容灾方面就采用复制或者HA集群方式解决这个问题。
垂直拆分阶段:这个阶段主要以ORACLE为主。随着业务量增大,单库已经很难满足业务需求。IO业务变得复杂,随之SQL也复杂化。此时,只能垂直下分,于是出现了单个服务化。例如按照功能拆分数据库,拆分成购物车、订单、支付或者商品这种服务的拆分。这个阶段对服务的质量要求开始提高,搭建了两地三中心,实现了跨机房容灾,以及网络存储级别容灾。
水平拆分阶段:业务量的持续增长,造成了订单或者购物车压力逐渐增大,只能做水平拆分。比如:把购物车按照用户哈希到不同的MySQL分片里,解决单库问题和某个模块的性能问题。随着NoSQL技术发展成熟,可能也采用一些Redis技术,在购物车时先写Redis,再异步同步到MySQL,类似这种方案,包括采用MongoDB,把规格参数或者是评论,一些日志类的东西放在MongoDB里,比如规格参数,手机、冰箱、彩电规格是不一样的,制造了一个规格参数模板,想改变这个模板加了一个属性,对于惯性数据库来说这是非常麻烦的,而对于MongoDB来说非常简单,只要加一个字段就可以,非常适合MongoDB的场景。
在运维工具的发展方面,经历了脚本时代、工具时代、自动化时代以及平台化时代。
2010年的脚本时代,可能仅有一两个人,通过写简单的脚本执行SQL或者做日常巡检等工作。只要通过脚本就可以满足业务需求,包括安装数据库、执行SQL等,通过手工执行即可解决。随着数据库类型和数据量的增加,在响应速度上出现了问题。比如:手工安装数据库的效率太慢,而且每个人安装的数据库的目录、端口或者配置参数都会五花八门,对于同一功能每个人在写脚本时写法也不尽相同。这个阶段对标准化或者规范化要求越来越高,要做到自动化可能需要标准化或者流程化做到位才可以实现。通过自动化解决日常中运维流程复杂性,根据定义好的规范可以实现自动化安装,自动从SVN上取下来代码就可以自动执行,这时如果靠记忆去记一共有多少个库,开发说在哪块执行NoSQL,如果还靠人去记这很难实现。2014-2015年的自动化时代,自动化主要解决的是内部运维流程问题,包括数据采集、监控自动化。那么如何把数据串起来,实现统一转现,如何与其他部门沟通,SQL做什么用,需要实现哪些功能?什么时候执行?在哪个系统执行?这个沟通的成本很大。于是在2015-2016年发展到了平台化时代后,平台的主要功能就是把整个流程都串起来,包括申请服务器需要的数据库类型,功能等。
那广表示,当平台技术和自动化技术完善之后可能会进入智能化时代,采集数据之后通过数据分析能智能去解决一些运维中的问题。假设磁盘空间80%报警了,会通过监控定位出来是哪个部落或者哪个数据文件报警,分析历史是否有类似报警,数据增长趋势,还会分析是因为备份失败了,比如没有清理日志或者因为报错引起的磁盘空间报警,再预判一下如果不处理多长时间会造成事故,通过分析定位出来问题会自动清理一些日志类的东西,实现日志报错,保证主机故障能够自动解决,延缓故障率,自动解决生产中遇到的问题。随着技术的成熟,在运维焦点上也发生了变化,最开始可能关注故障和性能,故障的快速响应,包括数据库性能、备份、容灾,随着这些稳定了之后更关注的是自动化、流程、质量,开发了一些流程,做了一些开发规范、运维规范,包括把一些故障或者日常处理问题都会记录到数据库。随着这些完善之后可能下一步关注的焦点是在于服务或者成本还有效率,怎么样降低硬件成本和人力成本,以及怎么快速交付数据库的服务。
数据库运维挑战重重
在数据库运维中遇到的挑战,主要体现在四个方面:存储、流程、服务和监控。
在存储方面,是广义类型的存储,例如数据库选型,应用的需求,会分析到底适合用什么样类型的数据库。日志或者订单流转状态,可能用MongoDB就可以。如何选择更合适的数据库,包括容量的规划,数据量预计的增长情况,通过什么判断这个数据未来增长情况。包括分片设计,到底是设计一年的增长率,还是设计两三年的增长率,通过什么去做分片,数据怎么做汇总,这是存储方面需要解决的问题。
在流程方面,流程是如何快速做到响应,包括故障响应和服务响应,故障如何快速处理,开发提出来的需求如何能够快速响应这个服务,包括操作和历史追溯性,各个接口之间数据是怎么串联的,怎么进行统一的查询、分析。
在监控方面,想要做到快速响应、实时响应,很精准报警,可以做到事件预测,比如判断磁盘空间数据增长情况,可以预判多长时间会出现问题,可能需要扩容类似这种。高效准确,假设报警很多,同样类型的报警隔一分钟报一次,报警会很多,上千或上万,就成为了一个垃圾报警,根本就没法处理这些问题,如何做这方面的优化,做数据清洗,比如同一类型报警不会反复发,发现了下次再出现相同类似报警汇总起来,隔5分钟或者隔10分钟再发一次,做到报警信息的清洗工作,包括准确性。
在服务方面,对开发提出的需求、日常变更能够快速响应、快速执行,怎么能让开发更了解数据库的运行状况,让他们也能帮助我们做一些性能方面的检查,因为他们更了解自己的业务,一看SQL或性能就知道大概哪块出现了问题,而不单纯从数据库层面优化SQL或性能。如何保证数据库的安全,保证数据安全、访问安全。
应对之道
根据遇到的问题以及挑战,国美确立了数据库运维目标,改变了数据库运维的角色,并建立了运维四化准则。
数据库运维目标就是要提供一个高效、稳定、安全的数据库服务。现在转变了观念,认为数据库是一种服务。对于开发来说是透明的,提供数据库服务,切换或者报错故障对开发来说没有感应,不需要改任何配置就可以实现数据库切换。高效性注重于响应效率、交付效率,包括监控准确性,提高日常运维效率。稳定性通过事件预测、历史数据分析、数据分析,保证数据库的稳定运行。成本则可能通过容量规划、扩展设计,节省硬件成本,通过提升运维效率降低人力成本。安全可能要做数据安全备份,包括访问安全限制,快速故障切换等。
在数据库运维角色上,分成了产品DBA、运维DBA和运维开发DBA。产品DBA主要是对接开发,制定一些开发规范,性能优化,开发讨论架构上的方案。原来少的时候一个人就可以搞定,从运维到跟开发沟通全都搞定了,但是随着开发人员比较多,沟通成本非常大,而且有些人沟通能力稍微强点,有些人侧重于技术,在运维角色上也做了一些改变。运维DBA主要做基础运维规范,容量规划,什么时候需要采购机器。开发DBA主要是对自己内部平台进行搭建,解决运维DBA和开发DBA困难的同时收集一些数据,对决策支持做一些帮助。
运维四化准则即是:平台化、自动化、服务化和可视化。
平台化:主要是把一些零散的服务整合起来,原来有备份系统、部署系统、发版系统,有用户管理、权限管理,在操作需要创建用户可能跳到用户平台,需要安装部署又跳到部署平台,要达到平台统一入口,在这一块就可以操作所有动作,而且这些数据都可以串联起来,都可以通过接口或者推送把这些基础数据串联起来,做到统一调度和统一数据展现。
自动化:就是标准化、规范化、流程化。
服务化:主要是数据库角度变换,现在提供的是服务,有可能以后还会有计费,假设某一个部门或某一个中心用了多少资源,这是为了下一步做打算。
可视化:通过可视化方式多维度展现基础数据。比如每个业务中心用了多少数据库,每个机房里数据库部署的情况,包括开发环境和生产环境数据库的比例,数据库MySQL是多少,MongoDB是多少,类似基础数据维度查询,包括应用连了数据库多少个连接,历史性能数据分析、展现,做到可以多维度查询,更好地支持运维决策。
数据库运维实践
数据库运维平台架构基本分为两个部分:基础服务和应用服务。基础服务包含监控、备份、DNS管理、CMDB、知识库、文件共享,通过这些基础服务能够支撑什么样的服务,比如动态高性能,切换、资源整合管理、用户管理、连接管理,通过一些基础信息关联能够更好提供应用服务。该架构在效率方面实现了自动化部署提升交付效率,一键式迁移提升运维效率, 并利用自动化发版提升运维效率。对于数据库的安全问题,通过用户、连接、权限全方位保证。
【讲师简介】
那广,国美在线平台运维部经理(架构师),国美在线技术体系创始团队成员之一。目前主要负责数据库及自动化运维平台。设计并带领开发了数据库容灾切换系统、SQL发版系统、备份系统、数据库巡检系统等;主要方向致力于搭建自动化运维平台,提供高性能、高可用的数据库服务。
本文由那广于2016年8月,在WOT2016移动互联网技术峰会运维与安全专场《数据库运维实践》主题演讲整理而成。WOT2016大数据峰会将于2016年11月25-26日在北京粤财JW万豪酒店召开,届时,数十位大数据领域一线专家、数据技术先行者将齐聚现场,在围绕机器学习、实时计算、系统架构、NoSQL技术实践等前沿技术话题展开深度交流和沟通探讨的同时,分享大数据领域***实践和最热门的行业应用。了解WOT2016大数据技术峰会更多信息,请登陆大会官网:http://wot.51cto.com/2016bigdata/
【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】