MySQL监控、性能分析——工具篇

https://blog.csdn.net/leamonjxl/article/details/6431444php

MySQL愈来愈被更多企业接受,随着企业发展,MySQL存储数据日益膨胀,MySQL的性能分析、监控预警、容量扩展议题愈来愈多。“工欲善其事,必先利其器”,那么咱们如何在进行MySQL性能分析、监控预警、容量扩展问题上获得更好的解决方案,就要利用各类工具来对MySQL各类指标进行分析。本文是读书笔记,下面说起的工具,读者可能都用过,或打算准备是使用。
MySQL服务器的发布包没有包含那些能完成许多常见任务的工具,例如监控服务器的工具、比较服务器间数据的工具。咱们把这些工具分红如下几类:界面、监控、分析和辅助工具。mysql

    • 带界面的工具
      一、MySQL可视化工具
      这些工具均可以避免费使用: 

       

      a、MySQL查询浏览器(MySQL Query Browser):这个不用说了…
      b、MySQL管理员(MySQL Administrator):功能集中在服务器管理上,因此它最适合DBA使用,而不是开发人员和分析人员。它能够帮助DBA把建立备份 、建立用户并分配权限、显示服务器日志和状态信息等过程进行自动化处理。它还包括了一些基本的监控功能,例如图形化的状态变量显示,可是它没有下文里会提到的交互式监控工具那么灵活。
      c、MySQL迁移工具箱(MySQL Migration Tookit):能够帮你把数据从别的数据库系统迁移到MySQL里。
      d、MySQL工做台(MySQL Workbench):MySQL的建模工具。ios

      二、SQLyog
      SQLyog是最经常使用的MySQL可视化工具,只能用于win下。web

      三、phpMyAdmin
      phpMyAdmin是一款很流行的管理工具,它基于Web界面来管理MySQL服务器。有不少支持者,但反对者也很多。sql

    • 监控工具
      MySQL监控是一个很大复杂的任务,不一样的应用有着不一样的需求。“监控”是你们滥用的术语之一,承载了几重意思。咱们讲到的监控工具被分为非互动的和互动的两类。非互动监控经常就是一个自动化系统,它接收系统的测量值,若是有超出安全范围的,就经过发出警告提醒管理员。互动监控工具可让你实时地观测服务器。 

       

      你可能对监控工具在其余方面的差异也很感兴趣,例如被动监控和主动监控,后者会发送报警信息并做出初步反应(就像Nagios同样);或者你可能正在寻找这样一工具:它能够建立一个信息仓库,而不只仅是显示当前的统计信息。有许多监控系统不是专为监控MySQL而设计的,它们就是一个通用系统,里面设计了一个周期性的任务,定时去检查各种资源的状态,例如像服务器、路由器、以及各类软件(包括MySQL)。它们经常会提供一个插件架构,同时有一个预订的MySQL插件可供使用。这样的一些系统可以记录监控对象的状态,并经过web界面用图形化的形式表示出来。当监控对象出现问题,或者状态值超过安全范围时,它们还能发送报警信息,或者执行一个初始化的动做。数据库

      a、非交互性工具浏览器

      一、Nagios
      监控界流行一句话:只要用顺了Nagios,你就永远不会再想到其它监控系统。
      对于Nagios本blog会持续推出相关文章,如今只是引用Nagios官方的介绍:
      Nagios是一款用于系统和网络监控的应用程序。它能够在你设定的条件下对主机和服务进行监控,在状态变差和变好的时候给出告警信息。
      Nagios最初被设计为在Linux系统之上运行,然而它一样能够在类Unix的系统之上运行。
      Nagios更进一步的特征包括:监控网络服务(SMTP、POP三、HTTP、NNTP、PING等);
      监控主机资源(处理器负荷、磁盘利用率等);
      简单地插件设计使得用户能够方便地扩展本身服务的检测方法;
      并行服务检查机制;
      具有定义网络分层结构的能力,用”parent”主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;
      当服务或主机问题产生与解决时将告警发送给联系人(经过EMail、短信、用户定义方式);
      具有定义事件句柄功能,它能够在主机或服务的事件发生时获取更多问题定位;
      自动的日志回滚;能够支持并实现对主机的冗余监控;可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等;安全

      下面是可代替Nagios的工具:服务器

      i、Zenoss
      Zenoss是用Python编写的,拥有基于浏览器的用户界面,并使用了Ajax使操做更加快捷而富有效率。它将监控、报警、趋势显示、图表显示和记录历史数据等功能合成在一个统一的工具里,它还能在网上自动发现资源,在默认状况下,Zenoss使用SNMP从远程机器上收集数据,但它也可使用SSH,而且支持Nagios插件。
      ii、Hyperic HQ
      Hyperic HQ是一款基于Java的监控系统,它的目标跟其余同类别的软件不太同样,它要成为企业级的监控系统。跟Zenoss同样,它也能自动发现资源,支持Nagios插件,可是它的逻辑组织和架构很不同,显得有点庞大。至于它是否是合适你的需求,那要看你的参数设置和监控的方式了。
      iii、OpenNMS
      OpenNMS是由Java编写的,拥有一个活跃的开发者社区。它具有了常规的功能,例如监控和报警,也加入了图表和趋势显示的功能。它的目标是高性能、伸缩性、自动化以及良好的兼容性。跟Hyperic同样,它也企图成为一款企业级的监控软件,能够用于大型的关键系统上。
      iv、Groundwork Open Source
      Groundwork Open Source其实是基于Nagios的,它把Nagios和其余几个工具集成为一个系统,并安上一个统一的门户界面。描述它的最好方法可能就是:若是你对Nagios、Cacti及其余工具很熟悉,而且可以花大量的时间把它们无缝地集成在一块儿的话,你也能在家庭做坊里作一个出来。
      v、Zabbix
      Zabbix是一个开源监控系统,在许多方面跟Nagios很相像,可是也有一些关键的不一样点。例如:它把全部配置信息和其余数据都存放在一个数据库里,而不是放在配置文件里;它比Nagios存储了更多类型的数据,这样能够生成更好的趋势图和历史报告。它的网络图表和可视化功能也优于Nagios。不少使用它的人发现它更易配置,更具备兼容性。提及来它也能比Nagios少,它的报警功能也不够高级。网络

      二、MySQL监控和建议服务
      MySQL本身的监控方案就是设计用来监控MySQL实例的,但也可以监控主机的一些关键方面。这个工具不是开源的,须要MySQL企业订阅费。

      三、MONyog
      MONyog是一个轻量级的无代理的监控系统,它跟以上那些工具备着不一样实现方法:它的底层是一个JavaScript引擎,全部配置都是经过JavaScrpt对象模型来完成的。它被设计为在桌面系统上运行,运行时它会在一个闲置的端口上打开一个HTTP监听器。这样,你就能够把你的浏览器指向这个端口,查看MySQL服务器的信息了,这信息都是结合了Javascript和Flash来表示的。MONyog实际上有交互式和非交互式两种类型,所以,你能够把两种类型的监控功能都尝试着用用看。

      四、基于RRDTool的系统
      严格地说,RRDTool不算是一个监控系统,可是,它很重要,有必要在此提到一下。不少组织里都是使用几种脚本或程序–这些通常都是自制的–从服务器那里读取信息,而后再保存到循环数据库(Round-robin database,RRD)文件里。在许多要获取记录生成图表的环境下,RRD文件是一个很合适的解决方案。它们能聚合输入的数据,若是输入数据值没有定期在随后提交进行时,还能在随后插入这些丢失的数据。它们还都带有强大的图表工具,可以生成漂亮的不同凡响的图表。如今已经有一些基于RRDTOOL的系统可供使用了。

      a、Muti Router Traffic Grapher,或者叫MRTG就是一款典型的基于RRDTOOL的系统。它真正的设计初衷是记录网络数据流,可是它也被扩展用来记录和图表化表示其余一些东西。
      b、Munin是一个能为你采集数据的系统,将它放入RRDTool后,就会根据数据生成不一样粒度的图表。它能从配置信息里生成静态的HTML文件,这样你就能够轻松地浏览,查看趋势状况。
      c、Cacti是另一个经常使用的图表和趋势显示系统。它的工做方式是:从系统里获取数据,而后保存在RRD文件里,而后用PHP Web界面的形式,使用RRDTool把数据以图表的形式展现出来。这个显示界面也是配置和管理界面(配置信息存储在一个MySQL服务器里)。它是模板驱动的,所以,你能够本身定义模板,并放到你的系统里使用。

      d、Cricket是一个用Perl编写的跟Cacti相似的系统,使用的是基于文件的配置系统。Ganglia也跟Cacti相似,但它的设计初衷是永远监控群集和系统网络,所以,你能够查看到由许多服务器信息聚合获得的结果,也能够按照你的意愿,查看单独某台服务器的信息。(Cacti和Cricket没法显示聚合数据。)

      以上这些系统均可以被用做MySQL系统信息的收集、记录、图表化数据和报告,它们在用途方面差别较小,都具有了不一样程度的兼容性。可是,它们缺少真正意义上的兼容性,好比当某些东西出错时,它要可以有针对性地发送报警信息给某些人。它们中的一些甚至没有“错误”的概念。因此,有些人把这一点看做是此类系统的一大缺点,以为最好仍是把记录、图表化表示、报警这几项功能都独立开来。事实上,Munin特意设计了使用Nagios来做为它的报警系统。然而,对于其余几个来讲,这的确是缺点。另外还有一个缺点就是安装和配置这样一个系统,使其能彻底知足你需求,须投入不少时间和努力,不过,这一点也并非这样。
      最后,RRD文件没法让你使用SQL或其余标准方法来查询它里面的数据。并且,在默认状况下,它永远会以一种刚好的粒度来存储数据,许多MySQL管理员就不肯意接受这种限制,转而选择一个关系数据库来存储这些历史数据。

       

      b、交互性工具
      交互性工具就是那些在你须要时就能够启动起来,并以视图显示的形式不断获取最新服务器状态的软件。

      innotop
      innotop是一个经过文本模式显示MySQL和InnoDB的监测工具。它有不少特色,快速的配置的,易于使用等。它吸收了MYTOP的精华这使它变得更增强大。innotop是用PERL语言写成的,这是它能更加灵活的使用在各类操做平台之上,它能详细的的监控出当前MYSQL和INNODB运行的状态,以便维护人员根据结果合理的优化MYSQL,让MYSQL更稳定更高效的运行。安装INNOTOP工具很是的简单,既然是由PERL写的,固然须要PERL环境和相关的工具包。在安装以前先要肯定你的系统安装了Time::HiRes,Term::ReadKey,DBI,DBD::mysql这四个包。安装能够把包下载下来经过编译安装完成也能够用PERL模块安装方式来完成。
      mtop
      是一个显示MySQL服务器查询状态的监视器。功能包括显示完成的查询进程,显示查询优化的信息及杀死一个查询。附加功能包括服务器性能统计,配置信息和调整技巧提示。
      mytop
      mytop就是類似top的MySQL監察工具。執行mytop後,它會每隔幾秒更新一次,并且也能够針對性地監察某一個資料庫。

    • 分析工具
      分析工具能够帮你自动化那些单调乏味的工做,如监测服务器,找出还能够优化和调优的功能区域。这些工具能够做为解决性能问题的良好开端。
      a、HackMySQL 工具(这个很出名,惋惜已中止更新) 

       

      一、Mysqlreport
      二、Mysqlsla

      b、Maatkit分析工具
      一系列命令行工具的集合。

    • MySQL的辅助工具MySQL里有几个工具是为了消除MySQL提供的功能与它自带的命令行工具之间的隔阂。a、MySQL Proxyb、Dormando的MySQL代理
相关文章
相关标签/搜索