如何对MySQL服务器进行调优,mysql启动错误

   我的是CentOS6.3+MySQL5.1.57。重启了一次服务器后,使用> mysql -u
root -p登陆是出现下面的错误:

  1. 先杀掉mysqld的进程:

  如今,开发人员不断地开发和部署使用LAMP(Linux?、Apache、MySQL 和
PHP/Perl)架构的应用程序。但是,服务器管理员常常对应用程序本身没有什么控制能力,因为应用程序是别人编写的。本文重点讨论为实现最高效率而对数据库层进行的调优。

  ERROR 2002 (HY000): Can’t connect to local MySQL server through
socket ‘/tmp/mysql.sock’ (2)

图片 1

  有3种方法可以加快MySQL服务器的运行速度,效率从低到高依次为:

  于是,我检察mysql状态:

  2. 使用skip-grant-tables这个选项启动MySQL:

  替换有问题的硬件。对MySQL进程的设置进行调优。对查询进行优化。

  > /etc/rc.d/init.d/mysqld status

图片 2

  替换有问题的硬件通常是我们的第一考虑,主要原因是数据库会占用大量资源。不过这种解决方案也就仅限于此了。实际上,您通常可以让中央处理器(CPU)或磁盘速度加倍,也可以让内存增大4到8倍。

  显示stop,未运行。

  3. 登录修改密码:

  第二种方法是对MySQL服务器(也称为mysqld)进行调优。对这个进程进行调优意味着适当地分配内存,并让
mysqld
了解将会承受何种类型的负载。加快磁盘运行速度不如减少所需的磁盘访问次数。类似地,确保
MySQL
进程正确操作就意味着它花费在服务查询上的时间要多于花费在处理后台任务(如处理临时磁盘表或打开和关闭文件)上的时间。对mysqld进行调优是本文的重点。

  >/etc/rc.d/init.d/mysqld restart

图片 3

  最好的方法是确保查询已经进行了优化。这意味着对表应用了适当的索引,查询是按照可以充分利用MySQL功能的方式来编写的。尽管本文并没有包含查询调优方面的内容(很多着作中已经针对这个主题进行了探讨),不过它会配置mysqld来报告可能需要进行调优的查询。

  Stopping mysqld: [ OK ]

  4. 关掉MySQL

  虽然已经为这些任务指派了次序,但是仍然要注意硬件和mysqld的设置以利于适当地调优查询。机器速度慢也就罢了,我曾经见过速度很快的机器在运行设计良好的查询时由于负载过重而失败,因为mysqld被大量繁忙的工作所占用而不能服务查询。

  MySQL Daemon failed to start.

图片 4

  记录慢速查询

  Starting mysqld: [ FAILED]

  5. 启动MySQL

  在一个SQL服务器中,数据表都是保存在磁盘上的。索引为服务器提供了一种在表中查找特定数据行的方法,而不用搜索整个表。当必须要搜索整个表时,就称为表扫描。通常来说,您可能只希望获得表中数据的一个子集,因此全表扫描会浪费大量的磁盘I/O,因此也就会浪费大量时间。当必须对数据进行连接时,这个问题就更加复杂了,因为必须要对连接两端的多行数据进行比较。

  >ps -ef | grep mysql

图片 5

  当然,表扫描并不总是会带来问题;有时读取整个表反而会比从中挑选出一部分数据更加有效(服务器进程中查询规划器用来作出这些决定)。如果索引的使
用效率很低,或者根本就不能使用索引,则会减慢查询速度,而且随着服务器上的负载和表大小的增加,这个问题会变得更加显着。执行时间超过给定时间范围的查询就称为慢速查询。

  root 28221 27474 0 14:18 pts/0 00:00:00 grep mysql 只有这一条

. 先杀掉mysqld的进程: 2.
使用skip-grant-tables这个选项启动MySQL: 3. 登录修改密码: 4. 关掉MySQL

  您可以配置 mysqld
将这些慢速查询记录到适当命名的慢速查询日志中。管理员然后会查看这个日志来帮助他们确定应用程序中有哪些部分需要进一步调查。清单1给出了要启用慢速查询日志需要在my.cnf中所做的配置。

  至此,我可以确定,mysql无法启动。

  1. 启动MySQL…

  清单1.启用MySQL慢速查询日志

  我开始排错,首先发现/tmp/mysql.sock不存在

  [mysqld]; enable the slow query log, default 10
secondslog-slow-queries; log queries taking longer than 5
secondslong_query_time = 5; log queries that don’t use indexes even if
they take less than long_query_time; MySQL 4.1 and newer
onlylog-queries-not-using-indexes

  >vim /etc/my.cnf

  这三个设置一起使用,可以记录执行时间超过5秒和没有使用索引的查询。请注意有关
log-queries-not-using-indexes 的警告:您必须使用 MySQL 4.1
或更高版本。慢速查询日志都保存在 MySQL 数据目录中,名为
hostname-slow.log。如果希望使用一个不同的名字或路径,可以在my.cnf中使用log-slow-queries
= /new/path/to/file 实现此目的。

  socket=/var/lib/mysql/mysql .sock

  阅读慢速查询日志最好是通过mysqldumpslow命令进行。指定日志文件的路径,就可以看到一个慢速查询的排序后的列表,并且还显示了它们在日志文件中出现的次数。一个非常有用的特性是mysqldumpslow在比较结果之前,会删除任何用户指定的数据,因此对同一个查询的不同调用被计为一次;这可以帮助找出需要工作量最多的查询

  /var/lib/mysql/mysql .sock同样不存在


PHP/Perl)架构的应用程序。但是,服务器管理员常常对应用程序本身没有什么…

  >find / -name mysql.sock

  显示为空,未查询到mysql.sock文件,mysql.sock文件丢失了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图