热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL数据库运维的五大指标(1)

如何评价一个公司数据库运维水平的高低?用什么来进行横向与纵向对比?自动化平台建设的目标是什么?必须有相应的指标体系来指导,本文罗列了关于MySQL数据库运维的五大指标,一起来看看。

如何评价一个公司数据库运维水平的高低?用什么来进行横向与纵向对比?自动化平台建设的目标是什么?必须有相应的指标体系来指导,此指标体系必须满足以下条件:

  • 可以用数字来测算和衡量
  • 最终指标,而不是中间指标

比如有时DBA会关注数据库的吞吐量,但吞吐量越高不能代表数据库提供的服务质量越好,开发人员关心这个指标的原因也是因为担心过高的吞吐量会影响响应时间或者造成系统不可用,所以这只是一个中间指标。

  • 可以全面衡量一个网站的数据库运维水平,而不会顾此失彼
  • 有人文关注

1.1.数据安全

数据安全是第一位的,DBA的首要职责必须保证不丢数据,丢掉数据就丢掉了饭碗!

这有3方面的含义:

1)在人为误操作的时候(update,insert,delete,drop,alter),能够恢复数据到正确的状态

2)在机房,硬件故障或者操作系统,数据库软件故障的时候,能够恢复数据到正确的状态

3)不丢事务,保证已经入库的数据能够被正确的查询到

另外,还要注意到需要保证主从数据库的一致性,否则读写分离的情况下其实在用户看来仍然丢失了数据。

对于1,主要靠备份来保证,因为复制可以容灾,却不可以容错(当然延迟备份在一定程度可以)。

对于2,可能用备份来恢复,也可能直接进行主库或者从库的切换来恢复服务

对于3,电商,支付库的要求会非常高,采用最高安全级别的数据库软硬件设置以及冗余设备,目标是不丢任何1个事务,因为即使1个事务也可能造成大量金钱的损失,同时造成企业信誉的下降。

“911”事件曾造成1200家公司受灾,其中一半以上的企业因为IT数据损毁、丢失,导致业务无法恢复,以致于宣布倒闭。金融界巨头Morgan Stanley 全球营业部第二天就恢复正常工作,正是因为先前建立的远程容灾系统保护了重要的数据。

可测量指标:

  • RPO(Recovery Point Object):恢复点指标,是指灾难发生后,容灾系统能把数据恢复到灾难发生前的哪一个时间点的数据,它衡量企业在灾难发生后会丢失多少生产数据
  • RTO(Recovery Time Object):系统恢复的时间

RPO说明了备份的可靠性和完整性,RTO说明了恢复的可靠性与速度。

由于MySQL开源版本并不提供热备的工具以及备份管理的工具(MSSQL,Oracle是提供的,当然它们是商业软件),所以要求DBA开发出自己的备份还原管理平台(脚本)。这也是DBA的首件工作。

 

1.2.无故障(停机)时间

运维和开发不一样,开发最重要的是保证一定效率的情况下实现功能,同时程序Bug少。运维讲的是提供稳定服务的时间。用术语来说就是几个9,具体含义就是年度不可服务(不管是主动的还是被动的)时间除以全年时间,百分比越高越好。具体和时间的换算关系见下表:

根据墨菲定理(If anything can go wrong,it will)的推论,世界上没有 100% 可靠的 Web站点(除非不运行)。运维的最高境界当然就是5个9了,一年停机时间只有5分钟,这是相当难以达到的目标,往往一个大故障就会把全年的停机时间用完。

业界网站的可用性都是多少?引人注目的 Web 新贵 Twitter (http://twitter.com), 2008 年前四个月的可用性只有 98.72%,有 37小时 16分钟不能提供服务,连2个9 都达不到,甚至还没达到”基本可用”状态。电子商务巨头 eBay 2007 年的可用性是 99.94%,考虑到 eBay 站点的规模与应用的复杂程度,这是个很不错可用性指标了。

多数情况下,网站可用性会是 SLA (Service Level Agreement, 服务水平协议) 中的一个重要度量指标,也是运维团队向自己老板做出的正式承诺。但可用性是能够持续改进的东西,运维负责人不可希望一步登天。

另外,如果是做第三方托管,需要明确第三方的服务能力与责任。否则,IDC 经常断电或者断网,即使自身做的再好也无法保证服务时间了。

提高可用性的一些常规策略有消除单点,部署冗余设备等。如果要提供更高的可用性,比如 4 个 9 甚至 5 个9,就不是简单靠硬件就能做到的事情,还需要建立自动化的工具与平台,完善的流程制度与变更机制,7*24小时的专人值班等。

可测量指标:

年度不可服务时间比例:年度不可服务(不管是主动的还是被动的)时间除以全年时间。

 

1.3.响应时间

响应时间是指一条查询或者更新语句从发出请求到接收完数据的时间。

因为最大响应时间的不确定性和不可重复性,所以一般使用X%的查询响应时间作为指标。如果值为95%为10ms,意味着95%的查询会在10ms内返回。对于OLTP查询来说,在50ms内返回是比较理想的结果。超过200ms的查询可以视为慢查询。

此指标较难收集,采用tcprstat虽然可以,但是tcprstat本身有一定的负载,另外也只收集最高到99%的响应时间,如果想知道比如99.999%的平均、最大响应时间就需要修改源码了。

目前有2个思路收集此数据:

采用tcpdump+pt-query-digest,将tcpdump抽样数据发送到中心机上利用pt-query-digest进行分析,然后入库后显示。此方法也需要修改pt源码,因为原版的pt支持的粒度太粗了,如下图,100ms直接跳到了1s:

此方法的优点是可以显示不同语句的情况,缺点是如果抽样时间长,中心机分析不完,而抽样时间短又可能信息没有代表性。

另外一个更轻量级的方法是将慢查询日志阀值打到50ms甚至更低,然后统计慢查询时间的分布,可以按时间和服务器维度进行分析(使用pt工具也可以得到不同语句的响应时间分布)如下表所示: 


									
  1. 4901 130421 
  2. dt num avg 
  3. —————————– 
  4. 0 1839 605 
  5. 1 920 596 
  6. 2 1215 450 
  7. 3 973 481 
  8. 4 488 603 
  9. 5 449 487 
  10. 6 516 597 
  11. 7 874 634 
  12. 8 1129 532 
  13. 9 1160 457 
  14. 10 1115 502 
  15. 11 987 529 
  16. 12 1531 559 
  17. 13 1185 537 
  18. 14 2238 1235 
  19. 15 1418 534 
  20. 16 1589 535 
  21. 17 951 548 
  22. 18 1790 531 
  23. 19 1520 503 
  24. 20 1845 496 
  25. 21 1855 542 
  26. 22 1583 564 
  27. 23 1840 562 
  28. None 31010 587 
  29.  
  30. ip num ratio 
  31. —————————– 
  32. 10.73.xx.xx 4418 14 
  33. 10.75.xx.xx 121 0 
  34. 10.75.xx.xx 7905 25 
  35. 10.75.xx.xx 5706 18 
  36. 10.75.xx.xx 6812 22 
  37. 10.75.xx.xx 6048 20 
  38. None 31010 100 


根据此结果可以发现慢查询在服务器之间分布并不均衡,这也是分析问题的很好的切入点。

可测量指标:

X%的查询/写入响应时间(ms)。

1.4.成本

在解决了稳定和速度后,就是成本的问题了。有人认为如果不计较成本,任何功能都是可以实现的,并且不需要高深的技术。我不完全认同这个观点。但架构师的使命的确不仅仅是“完成”功能,如果说完成功能可以有50种方法,

因为经济学上认为找到最优方案可能成本比回报还要高,那么至少要找出相对较优的几种方法并进行最终的选择。

成本的构成主要是硬件成本+软件成本+人力成本,因为互联网企业软件以自主开发和开源为主,所以其中主要是硬件和人力成本,硬件成本也包含了机房的机架,带宽,电力成本。

对大型互联网公司来说,服务器规模都在上万台以上,Google的服务器规模更达到了百万级。而互联网公司的人才规模也是相当惊人,TAB公司的人员都在万人以上。

因此如何能够提高硬件的使用效率,降低人工运维成本,提高人均产出,也就成为关系到互联网公司生死存亡的事情了。

可测量指标:

投入成本=硬件成本(含机架,带宽,电力)+软件成本(MySQL可忽略) +人力成本

1.5.运维人员幸福度

运维自动化是方向不假,但目前阶段来说,有很多工作还需要人来完成,越是复杂的工作越需要人工干预。对于一些创业公司,自动化平台更是要从头打造,此时间段内的很多操作需要手工完成。

克拉克的《与拉玛相会》描绘了一个完全靠机器人运维,在太空中飞行了上万年的巨大人工飞行器。但现在科技毕竟离此阶段还差得远。人也不是机器人,是有个性,独一无二的智慧生物。

为了体现运维的人文关怀,必须加入人员幸福度指标。

幸福度可以从3方面考量:

1)人均承担数据库读写量(如果数据库读写量大,这个值低,那么必然运维人员多,人均产值/薪酬低)

2)运维人员长期从事机械化的,重复性工作的时间比例

3)运维人员在工作时间以外进行切换上线,故障处理的时间比例

如果这3项指标差, 那就意味着团队的幸福感差,必然离职率高。所以离职率也是衡量指标之一。

如果有一个系统能够将上面的5个指标都量化记录下来,并采用各种方法持继改进指标,相信最终会建立一个比较好的运维平台。

 


推荐阅读
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • FIN7后门工具伪装成白帽工具进行传播
    fin7,后门,工具,伪装,成,白, ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • OAuth2.0指南
    引言OAuth2.0是一种应用之间彼此访问数据的开源授权协议。比如,一个游戏应用可以访问Facebook的用户数据,或者一个基于地理的应用可以访问Foursquare的用户数据等。 ... [详细]
  • MybatisPlus入门系列(13) MybatisPlus之自定义ID生成器
    数据库ID生成策略在数据库表设计时,主键ID是必不可少的字段,如何优雅的设计数据库ID,适应当前业务场景,需要根据需求选取 ... [详细]
  • 范式转移:构建超级应用——胖应用 + 胖协议
    范式转移:构建超级应用——胖应用 + 胖协议 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
  • 周鸿祎火力全开
    “在这个IoT时代,只是孤立地搞大数据,孤立地搞云,或谈AI,或做一个智能硬件,我觉得都是不完备的,必须将这几项技术综合运用起来,才是一个真正的IoT时代,也是IoT真正的春天。” ... [详细]
  • Ansem 最新雄文:软着陆后,加密市场下阶段趋势与核心叙事
    市场最糟糕的时候已经过去,以太坊合并前不太会看到新的低点;但仍需来自关注宏观市场的不确定风险。撰文:Ansem ... [详细]
  • 2017亚马逊人工智能奖公布:他们的AI有什么不同?
    事实上,在我们周围,“人工智能”让一切都变得更“智能”极具讽刺意味。随着人类与机器智能之间的界限变得模糊,我们的世界正在变成一个机器 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
author-avatar
川川shilohjr_993
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有