[MySQL FAQ]系列 -- 写给新手:学会找到问题所在
前言:我想,对于新手来说,有个很重要的问题,就是在mysql发生问题时,就束手无策,不知道该做什么了。要么到论坛里发“冰天雪地裸体跪求帮助”或“急急急”之类的帖子,要么在群里狂喊,对解决问题毫无帮助。这个时候,新手们要做的就是,学会看日志,并且找到问题所在,然后尝试自己动手解决,或者把问题描述清楚,让有经验的人士帮忙。本文说下几种常见问题,以及解决问题的丝路。
情景1:mysql无法启动
[ERROR] /usr/local/mysql/libexec/mysqld: Can't create/write to file '/usr/local/mysql/yejr.pid' (Errcode: 13)
可以看到,日志提醒的是,无法创建文件:/usr/local/mysql/yejr.pid,错误代码(Errcode)为:13。这时候,我们可以通过mysql提供的工具 perror 来查看错误代码 13 具体代表什么意思:
[yejr@imysql ~yejr]# /usr/local/mysql/bin/perror 13 OS error code 13: Permission denied
这下很明了了,没有权限,只需要修改一下目录属主即可:
[yejr@imysql ~yejr]# chown -R mysql:mysql /usr/local/mysql
情景2:mysql无法启动
Starting mysqld daemon with databases from /var/lib/mysql STOPPING server from pid file /var/lib/mysql/yejr.pid mysqld ended
这是屏幕的标准错误输出,谁都无法理解真正是什么意思。很多新手在提问时,也一般只会提供这部分信息,当然是完全不够的。这时候,我们需要看看数据库主目录下的错误日志文件到底记录了什么内容。一般情况下,错误日志文件名为:xxx.err。
[yejr@imysql ~yejr]# more *.err ...... File './yejr-bin.000001' not found (Errcode: 13) [ERROR] Could not use yejr-bin for logging (error 13). Turning logging off for the whole duration of the MySQL To turn it on again: fix the cause, shutdown the MySQL server and restart it. [ERROR] Aborting [Note] /usr/libexec/mysqld: Shutdown complete ......
错误代码和刚才的一样,也是属于权限的问题,不过这次是要创建binlog。这时候,我们需要先确定是否需要开启 binlog,如果系统的I/O负载不是很高,而且没有完善的备份机制情况下,建议还是开启binlog,至少作为一种应急备份机制。如果不需要开启,我们只需要在 my.cnf 中把类似以下2行注释掉:
#log-bin = xxx #binlog-format = xxx
这时候就会禁用binlog,然后跟上面的例子一样,修改下目录属性,应该就可以了。
总结:在你不知道该怎么办的时候,第一件事,就是查看 xxx.err 文件,然后把该文件最新部分的内容提供给你要询问的人,以方便他们帮助你解决问题。
评论
lala (未验证)
周二, 2009/03/03 - 20:00
Permalink
学习自己发现问题,
学习自己发现问题,解决问题更有意义 :)
游客 (未验证)
周二, 2010/02/23 - 16:42
Permalink
不错,解决问题的技
不错,解决问题的技巧有很多,但思路更重要,清晰的思路对解决问题的帮助是显而易见的,谢谢。
dlfen (未验证)
周二, 2010/05/11 - 00:18
Permalink
看到这篇文章很有感
看到这篇文章很有感触。
开始的时候经常碰到这样的问题,花很长时间去搜索解决这些问题。
后来慢慢摸索,知道如何看错误信息了,这个确实很重要。
C起航 (未验证)
周三, 2010/07/21 - 22:03
Permalink
呵呵,授之以鱼不如
呵呵,授之以鱼不如授之以渔。
这篇文章对新手来说确实不错。
H_mysql
周一, 2010/08/30 - 19:23
Permalink
非常同意你的说法,
非常同意你的说法,也非常感谢楼主。换句话说,求人不如求己!
游客 (未验证)
周二, 2010/09/07 - 14:41
Permalink
新手学习了!
新手学习了!