使用MySQL监控,以优化性能

MySQL的监测是最复杂和最重要的任务,数据库管理员必须执行一个。在MySQL的问题会影响整个业务流程。MySQL的数据很容易受到不可恢复的错误,因此,数据库管理员必须检查从服务器状态变量和检查记录的事件。基于还可以优化服务器变量和数据库因此这个数据,管理员和开发人员。下面是一些基本的方法来保持眼睛上安装的数据完整性。

您可以使用许多不同的基于文本和图形工具连接到MySQL。对于本文,我将使用本地MySQL终端客户端,它可以在不需要图形环境的管理站点和服务器上使用,并且提供了连接到MySQL服务器的最快和最可靠的方法。在Centos下MySQL的终端可通过MySQL客户端包,它总是与MySQL服务器沿着一个依赖安装。我的一些示例使用员工测试DBLaunchpad上,这是经常MySQL官方文档中提及。它包含足够的不同的数据表,让你练MySQL的管理和发展。

您可以远程或本地启动MySQL客户端。你必须提供用户名,密码和主机名(必要的远程管理)当您启动客户端。例如,启动客户端admin用户(根)并发起与的10.0.0.1的IP地址的服务器的连接,则命令将是的/ usr / bin中/ MySQL的-h 10.0.0.1 -u根-p。要避免安全问题和错误配置,你还可以只对执行此命令创建一个没有特权的单独的用户。

从MySQL终端进行监视是围绕表演命令。SHOW全球地位,例如,显示所有来自服务器的通用统计信息。使用SHOW您可以阅读超过290项的全球服务器指标从正常关闭连接(Aborted_clients)到服务器的正常运行时间(运行时间)任何东西。

每个服务器状态指示器都可以满足您的监视和故障排除需要,所以您应该在官方中熟悉它们MySQL手册。一些最重要的问题如下。

  • Aborted_clients显示不正确关闭的连接,表示编写不当或运行不良的应用程序超过服务器的超时限制或没有正确关闭连接。这可能会导致各种应用程序问题,如速度慢或数据表示不完整。在关闭MySQL连接的部分,从应用程序的代码开始调查它。
  • Aborted_connects当连接不能因为不正确的登录信息来建立节目。该指示器通常意味着应用程序的配置不正确。一个非常高的数字可能表明有人试图蛮力验证到MySQL服务器。
  • Bytes_receivedBytes_sent显示流量,并从所有的客户。网络瓶颈是不能在MySQL中常见的问题,但它始终是值得知道多少带宽MySQL服务消耗。
  • COM_ *指示器是常用MySQL数据命令(如select、delete和update)的计数器。这些值显示自服务器启动以来每个操作执行了多少次。这些计数器对于分析服务器最常见的操作类型非常有用,这样您就可以适当地对其进行优化。例如,如果选择命令主宰,你应该优化服务器更快的读取速度,创建索引,特别是提高其查询缓存。
  • Innodb_ *指标显示特定的InnoDB相关的统计数据,可用于调整InnoDB的服务器引擎和InnoDB表设置。
  • Max_used_connections演出次数最多的MySQL连接,成功和不成功的,这可能表明瓶颈,需要增加服务器变量MAX_CONNECTIONS
  • Slow_queries要花执行时间超过服务器变量的查询的数量long_query_time时间,默认为10秒。即使是一些缓慢的查询也是令人担忧的,应该进行调查。

要获得服务器变量的值,如我刚才提到的那些,运行命令显示全局变量;。如果需要,您可以通过编辑文件/etc/my.cnf永久更改变量的值。地方配置的指令和值在(mysqld)该文件的部分。

为了更深入地了解MySQL的监控和查找有关特定表的信息,可使用命令SHOW TABLE STATUS FROM DATABASE_NAME \ G变。对于员工的测试数据库的一个例子结果行看起来是这样的:

名称:工资引擎:InnoDB的版本:10 ROW_FORMAT:紧凑行:2844513 AVG_ROW_LENGTH:35 DATA_LENGTH:100270080 Max_data_length:0 Index_length:36241408 Data_free:22020096 AUTO_INCREMENT:NULL CREATE_TIME:2012年10月19日11时53分27秒UPDATE_TIME:NULL CHECK_TIME:NULL整理:latin1_swedish_ci校验:NULL Create_options:评论:

这里有两个指标对监测尤其重要:DATA_LENGTH显示大小的字节数表中的,而Index_length显示指数的字节大小。查询这两个值是找出你的数据和指标有多大,在任何给定的时间,让你可以在以后跟着他们的扩张是最精确的方法。

一个必知SHOW命令,可以节省你的日子SHOW PROCESSLIST,它提供关于当前MySQL的任务的基本信息:

+ ---- + --------- + --------------------- + ----------- +--------- + ------ + ------------------- + ----------------------------------------------- + |ID |用户|主机|DB |命令|时间|国家|信息|+ ---- + --------- + --------------------- + ----------- +--------- + ------ + ------------------- + ----------------------------------------------- + | 8 | root | localhost | employees | Query | 64 | Locked | insert into salaries (select * from salaries) | | 13 | root | localhost | NULL | Query | 0 | NULL | show processlist | | 15 | anatoli | 192.168.1.100:37383 | employees | Query | 85 | copy to tmp table | ALTER TABLE `salaries` DROP PRIMARY KEY | +----+---------+---------------------+-----------+---------+------+-------------------+-----------------------------------------------+

的最上面的值的含义是不言自明的,但列需要特别注意。ID为8的方法,是在锁定状态,这意味着它被另一个进程阻塞并等待其完成。在这种情况下,我们知道锁定过程具有ID 15,因为语句ALTER TABLE总是获取关于表,这意味着其他进程可以从表中读出的数据,但以任何方式不能改变它READ-LOCK。在应用中,锁定表导致超时,错误和停机时间。

为了避免你可能会杀死一个长期运行的进程与命令停工和应用程序问题KILL 编号。然而,这并不总是一个好主意,因为数据可以通过杀死多数民众赞成操纵它的过程被破坏,这是尤其如此的ALTER TABLE过程。之前手动杀死一个MySQL的过程,你应该找出其提前终止的影响。

许多表演命令并不常用,但根据您的监视需要可能很有用。例如,如果您运行MySQL复制,您将对监视其状态感兴趣。监视复制的最重要命令是SHOW SLAVE STATUS,其示出了从站的当前状态和所述指示器的Seconds_Behind_Master。理想情况下,指示符是等于零,这意味着从设备与主是完全同步的,并且没有复制错误。你应该分析你看到任何其他的价值。

要查看所有表演命令,而不是所有这些都是用于监测,使用命令HELP SHOW

监测MySQL的慢日志

MySQL的慢日志为您提供有关其执行时间超过了服务器的可变流程的信息long_query_time时间。默认情况下,查询不会记录到文件中;要让MySQL这样做,编辑/etc/my.cnf配置文件并添加指令log_slow_queries = /var/log/mysql-slow.log。确保文件存在和MySQL用户可以写入。对于此更改生效,必须重新启动使用命令MySQL服务服务的mysqld重启

从慢日志类似如下的示例摘录:

#时间:121028 13点17分24秒#用户@主机:根[根] @本地[]#Query_time:194.052534 Lock_time:65.396478 Rows_sent:0 Rows_examined:5687748插入到薪金(SELECT * FROM工资);

在此日志条目,Query_time指示在查询运行多久秒;时间越长,性能越差。Lock_time节目查询了多少时间等待获得表上的锁 - 在这种情况下,超过一分钟。这会对性能和稳定性产生极为不利的影响。最后一行显示,导致日志条目的查询。

上述慢速查询只是测试一个我特制的要慢,所以没有太多的优化,但现实世界的生产速度慢的查询应该进行调查和照顾。你如何开始这样做呢?

与缓慢的查询处理是一个复杂的过程,但这里有几个方向的探索。先从应用程序代码。也许一个慢查询可以被限制为原始数据的子集,特别是通过使用索引数据列。之后尝试检查表数据,它的结构和状态,并进行归一化,添加索引和整理。接下来,尝试用现成的工具如调整MySQL服务配置MySQL的调谐器。最后,如果没有其他帮助,增强服务器的硬件——增加更多的RAM、更快的介质或更多的cpu。

一旦你掌握了上述基本MySQL的监测技术,你就必须构建自己的定制的MySQL监控战略的一个良好的开端。这是不够的,以检查这些指标一旦在一段时间或当有问题;代替,记录值和在一段时间绘制结果。这将允许您跟随潮流,了解趋势,并评估您的优化工作的结果。

加入对网络世界的社有个足球雷竞技app区Facebook的LinkedIn对那些顶级心态的话题发表评论。

版权所有©2012Raybet2

IT薪资调查:结果是