zoukankan      html  css  js  c++  java
  • MySQL监控、性能分析——工具篇

    转自http://blog.csdn.net/leamonjxl/article/details/6431444

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

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

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

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

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

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

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

      a、非交互性工具

      1、Nagios
      监控界流行一句话:只要用顺了Nagios,你就永远不会再想到其它监控系统。
      对于Nagios本blog会持续推出相关文章,现在只是引用Nagios官方的介绍:
      Nagios是一款用于系统和网络监控的应用程序。它可以在你设定的条件下对主机和服务进行监控,在状态变差和变好的时候给出告警信息。
      Nagios最初被设计为在Linux系统之上运行,然而它同样可以在类Unix的系统之上运行。
      Nagios更进一步的特征包括:监控网络服务(SMTP、POP3、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少,它的报警功能也不够高级。

      2、MySQL监控和建议服务
      MySQL自己的监控方案就是设计用来监控MySQL实例的,但也能够监控主机的一些关键方面。这个工具不是开源的,需要MySQL企业订阅费。

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

      4、基于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 工具(这个很出名,可惜已停止更新) 

      1、Mysqlreport
      2、Mysqlsla

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

    • MySQL的辅助工具
      MySQL里有几个工具是为了消除MySQL提供的功能与它自带的命令行工具之间的隔阂。
      a、MySQL Proxy
      b、Dormando的MySQL代理
  • 相关阅读:
    HDU 1022 Train Problem I
    HDU 1702 ACboy needs your help again!
    HDU 1294 Rooted Trees Problem
    HDU 1027 Ignatius and the Princess II
    HDU 3398 String
    HDU 1709 The Balance
    HDU 2152 Fruit
    HDU 1398 Square Coins
    HDU 3571 N-dimensional Sphere
    HDU 2451 Simple Addition Expression
  • 原文地址:https://www.cnblogs.com/Toeasy/p/3079800.html
Copyright © 2011-2022 走看看