ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

数据库服务和管理,MySQL/PostgreSQL/Oracle/Sybase 等
回复
zhuwz
帖子: 9
注册时间: 2009-08-17 20:05
送出感谢: 0
接收感谢: 0

ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

#1

帖子 zhuwz » 2010-05-06 15:54

操作系统 ubuntu-10.04-server-amd64
安装完lamp server后。
测试mysql可以正常重启等。
故障重现步骤
1、使用mysql自带配置文件,提升mysql性能

代码: 全选

     sudo cp /usr/share/doc/mysql-server-5.1/examples/my-large.cnf.gz /etc/mysql/
     cd /etc/mysql/
     sudo gzip -d my-large.cnf.gz
     sudo cp my.cnf my.cnf.bk
     sudo service mysql restart //确认mysql还活着
     mysql -u root -p           //真的活着,然后退出crtl+d
     sudo cp my-large.cnf my.cnf
     sudo service mysql stop
     sudo service mysql start   //悲剧了。
2、尝试恢复my.cnf

代码: 全选

     sudo cp my.cnf.bk my.cnf
     sudo service mysql start   //依旧悲剧,mysql再也启动不起来了(无任何mysql相关错误日志),可使用mysqld_safe启动。
后来发现问题主要出在my-large.cnf中需要添加一条参数

代码: 全选

   [mysqld]
    user            = mysql
若在重启mysql前加上了这条则,一切太平。没有加就重启服务的话。。。那就悲剧了。。感觉这个问题出在mysql的启动脚本里。现在还没找到解决的办法,有兄弟能提供些解决的线索吗?
kamui0523
帖子: 547
注册时间: 2008-05-14 18:53
来自: 上海
送出感谢: 0
接收感谢: 0

Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

#2

帖子 kamui0523 » 2010-05-06 19:15

不可能没日志的,看/var/log/mysql下的日志
三年Linux使用经验,两年Ubuntu使用经验
提供各种企业解决方案
Ubuntu QQ群:66320976
Linux Blog
http://deephell.72pines.com
zhuwz
帖子: 9
注册时间: 2009-08-17 20:05
送出感谢: 0
接收感谢: 0

Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

#3

帖子 zhuwz » 2010-05-07 9:27

这个我看过了,还有syslog和message都看过了。其实问题不是mysql没启动,我觉得是在mysql服务启动的脚本中根本没运行到启动mysql那一步就卡死了。应该是新的服务管理造成的,我用mysqld_safe是能启动的也能产生日志。日志应该是运行了mysqld守护进程的时候才会记录,我是这么判断的。
zhuwz
帖子: 9
注册时间: 2009-08-17 20:05
送出感谢: 0
接收感谢: 0

Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

#4

帖子 zhuwz » 2010-05-07 9:28

大家可以按照我上面的步骤在虚拟机中作个测试,我的重现率是100%。
在init.d中的mysql启动项和早期的版本不一样了。(文件的时间是由于我手工编辑了脚本想echo点信息出来导致时间变更,在故障前后这个脚本没有变动)

代码: 全选

/etc/init.d$ ls -l|grep mysql
lrwxrwxrwx 1 root root   21 2010-05-06 22:38 mysql -> /lib/init/upstart-job
实际的启动配置文件好像变成了下面这个。
/etc/init/mysql.conf
文件内容如下(该文件在启动前后也无变动)

代码: 全选

#################
# MySQL Service

description     "MySQL Server"
author          "Mario Limonciello <superm1@ubuntu.com>"

start on (net-device-up
          and local-filesystems)
stop on runlevel [016]

respawn

env HOME=/etc/mysql
umask 007

pre-start script
    #Sanity checks
    [ -r $HOME/my.cnf ]
    [ -d /var/run/mysqld ] || install -m 755 -o mysql -g root -d /var/run/mysqld
    LC_ALL=C BLOCKSIZE= df --portability /var/lib/mysql/. | tail -n 1 | awk '{ exit ($4<4096) }'
end script

exec /usr/sbin/mysqld

post-start script
    while ! /usr/bin/mysqladmin --defaults-file=$HOME/debian.cnf ping
    do
        sleep 1
    done
    exec $HOME/debian-start
end script
###############################



/etc/mysql$ ls -l|grep debian-start
-rwxr-xr-x 1 root root 1198 2010-04-14 01:04 debian-start
/etc/mysql/debian-start文件如下(又包含了/usr/share/mysql/debian-start.inc.sh)

代码: 全选

###################################
#!/bin/bash
#
# This script is executed by "/etc/init.d/mysql" on every (re)start.
# 
# Changes to this file will be preserved when updating the Debian package.
#

source /usr/share/mysql/debian-start.inc.sh

MYSQL="/usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf"
MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
MYUPGRADE="/usr/bin/mysql_upgrade --defaults-extra-file=/etc/mysql/debian.cnf"
MYCHECK="/usr/bin/mysqlcheck --defaults-file=/etc/mysql/debian.cnf"
MYCHECK_SUBJECT="WARNING: mysqlcheck has found corrupt tables"
MYCHECK_PARAMS="--all-databases --fast --silent"
MYCHECK_RCPT="root"

# The following commands should be run when the server is up but in background
# where they do not block the server start and in one shell instance so that
# they run sequentially. They are supposed not to echo anything to stdout.
# If you want to disable the check for crashed tables comment
# "check_for_crashed_tables" out.  
# (There may be no output to stdout inside the background process!)
echo "Checking for corrupt, not cleanly closed and upgrade needing tables."
(
  upgrade_system_tables_if_necessary;
  check_root_accounts;
  check_for_crashed_tables;
) >&2 &

exit 0
####################################
查看了/var/run/mysqld、/var/run。也没有sock文件和pid文件。
运行

代码: 全选

/etc/mysql$ sudo service mysql status
mysql respawn/post-start, (post-start) process 1010

代码: 全选

ps -aux|grep 1010
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
root      1010  0.3  0.1   4088   588 ?        Ss   17:41   0:00 /bin/sh -e /proc/self/fd/11
steam     1110  0.0  0.1   7616   904 pts/0    S+   17:41   0:00 grep --color=auto 1010
感觉是由于使用了错误的帐号启动了mysql服务导致服务启动过程出错,在添加了user=mysql参数后,也无法再次成功启动了。这个让我很诧异。启动脚本均未受变动。/var/lib/mysql中似乎也没异常出现。
如果这个是服务mysql服务脚本的问题的话还好。若是服务管理本身的问题。。那么很多其他服务应该也会遇到相关问题的。
上次由 zhuwz 在 2010-05-07 9:47,总共编辑 1 次。
kamui0523
帖子: 547
注册时间: 2008-05-14 18:53
来自: 上海
送出感谢: 0
接收感谢: 0

Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

#5

帖子 kamui0523 » 2010-05-07 9:45

我直接物理机试了下,是起不来,还原my.cnf后
用/etc/init.d/mysql status,杀掉显示的进程就可以重启mysql了
用diff对比了下my.cnf和my-large.cnf,有很多出入,不过我对mysql没什么特殊要求,你有兴趣自己研究把,呵呵
另外linux不存在悲剧的事情,大部分情况都是可以修复的.
三年Linux使用经验,两年Ubuntu使用经验
提供各种企业解决方案
Ubuntu QQ群:66320976
Linux Blog
http://deephell.72pines.com
zhuwz
帖子: 9
注册时间: 2009-08-17 20:05
送出感谢: 0
接收感谢: 0

Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

#6

帖子 zhuwz » 2010-05-07 9:56

你那里mysql能启动了? 0 0
恩也正在试着看,其实my-large.cnf中只要添加user=mysql这个参数后,mysql就不会出现错误了。出现错误的原因应该还是使用错误的用户启动过一次服务。我即使手工kill掉那个进程,虽然mysql status显示running了。但是实际还是没有mysqld这个进程存在,mysql无法登录。
kamui0523
帖子: 547
注册时间: 2008-05-14 18:53
来自: 上海
送出感谢: 0
接收感谢: 0

Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

#7

帖子 kamui0523 » 2010-05-07 9:59

kill掉进程后应该显示stop,而不是running,我刚才又试了2次,my-large.cnf后启动失败,还原my.cnf重启也失败,同样日志中无任何报错,只有exit返回1的错误.
/etc/init.d/mysql status后杀掉显示的进程,重启成功
再不行你把ps -ef中显示的mysql进程也杀掉
三年Linux使用经验,两年Ubuntu使用经验
提供各种企业解决方案
Ubuntu QQ群:66320976
Linux Blog
http://deephell.72pines.com
zhuwz
帖子: 9
注册时间: 2009-08-17 20:05
送出感谢: 0
接收感谢: 0

Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

#8

帖子 zhuwz » 2010-05-07 10:09

谢谢,我在添加了user=mysql后kill掉进程就启动mysql了。不添加这条,kill掉后自动又会新建一个启动脚本进程。我再看看问题出在哪里。
Ulinux-Future
帖子: 50
注册时间: 2009-11-23 11:53
来自: 中国江苏省
送出感谢: 0
接收感谢: 0
联系:

Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

#9

帖子 Ulinux-Future » 2010-07-05 0:05

我也想知道问题出在那里,为什么没有下文了。
头像
xuwu125
帖子: 204
注册时间: 2007-11-26 19:10
来自: 浙江省
送出感谢: 0
接收感谢: 0
联系:

Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

#10

帖子 xuwu125 » 2010-07-05 21:58

期待更新。。。

代码: 全选

# sudo apt-get --help
# .....
# remove 删除
# install 安装
# 本 APT 具有超级牛力。
# sudo apt-get remove window* && sudo apt-get install ubuntu && sudo init 1
# ......
# 正在为您配置NB的系统...
# 系统正在为您关机.....
Linux水吧
zhuwz
帖子: 9
注册时间: 2009-08-17 20:05
送出感谢: 0
接收感谢: 0

Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

#11

帖子 zhuwz » 2010-07-09 13:00

问题就是user=mysql 没有加
在以前的ubuntu server不加也可以启动。10.04不加就无法启动了。必须以mysql用户启动mysqld
burner
帖子: 12
注册时间: 2008-11-20 12:49
送出感谢: 0
接收感谢: 0

Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

#12

帖子 burner » 2011-02-09 21:28

这个问题困扰了我将近1天的时间,和楼主说的一样,但用楼主的方法试过都不行。
root@server1:/home/admin# /etc/init.d/mysql restart
就是不能重启mysql

后来尝试:
rm sh
ln -s bash sh
然后:

root@server1# /etc/init.d/mysql restart 成功重启MySQL.
(注意是root@server1#(以我的电脑为例),而不是root@server1:/home/admin#)

希望对大家有用。
头像
rabbit_52
帖子: 140
注册时间: 2010-05-09 9:03
送出感谢: 1 次
接收感谢: 1 次
联系:

Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

#13

帖子 rabbit_52 » 2011-09-25 11:02

我的还是不行~只要修改了my.cnf就无法重启,就算重启电脑也不行,添加了user=mysql了的~删掉/etc/my.cnf又能启动了。。。其实我只是想修改一下数据库的字符集 :em19
Blog
注册Dropbox!同涨空间 ^_^
liog
帖子: 1
注册时间: 2012-10-30 21:38
系统: linux
送出感谢: 0
接收感谢: 0

Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

#14

帖子 liog » 2012-10-30 22:00

我今天也遇到了这种情况。ubuntu10.04,新装mysql,开始能用,但发现character set server是latin1。上网搜,得知在my.cnf文件上加default character set = utf8。加后,mysql不能启动。没办法,删去重装,竟然还是不行,试多次,无果。

而且,不管装多少遍,都是报配置mysql-server-5.5不成功。由于前边删过my.cnf,但无论怎么装,竟再也不出现了。

很鬱闷。

:em20
burner
帖子: 12
注册时间: 2008-11-20 12:49
送出感谢: 0
接收感谢: 0

Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题

#15

帖子 burner » 2014-12-29 15:07

操作系统 ubuntu-14.04-amd64
新装mysql,开始能用,但发现character set server是latin1。上网搜,得知在my.cnf文件上加default character set = utf8。加后,mysql不能启动。
只好改回原来的my.cnf,然后重启mysql成功。
回复

回到 “数据库管理”