当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 15 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题
帖子发表于 : 2010-05-06 15:54 

注册: 2009-08-17 20:05
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
操作系统 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的启动脚本里。现在还没找到解决的办法,有兄弟能提供些解决的线索吗?


页首
 用户资料  
 
2 楼 
 文章标题 : Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题
帖子发表于 : 2010-05-06 19:15 

注册: 2008-05-14 18:53
帖子: 547
地址: 上海
送出感谢: 0 次
接收感谢: 0 次
不可能没日志的,看/var/log/mysql下的日志


_________________
三年Linux使用经验,两年Ubuntu使用经验
提供各种企业解决方案
Ubuntu QQ群:66320976
Linux Blog
http://deephell.72pines.com


页首
 用户资料  
 
3 楼 
 文章标题 : Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题
帖子发表于 : 2010-05-07 9:27 

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


页首
 用户资料  
 
4 楼 
 文章标题 : Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题
帖子发表于 : 2010-05-07 9:28 

注册: 2009-08-17 20:05
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
大家可以按照我上面的步骤在虚拟机中作个测试,我的重现率是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 次

页首
 用户资料  
 
5 楼 
 文章标题 : Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题
帖子发表于 : 2010-05-07 9:45 

注册: 2008-05-14 18:53
帖子: 547
地址: 上海
送出感谢: 0 次
接收感谢: 0 次
我直接物理机试了下,是起不来,还原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


页首
 用户资料  
 
6 楼 
 文章标题 : Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题
帖子发表于 : 2010-05-07 9:56 

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


页首
 用户资料  
 
7 楼 
 文章标题 : Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题
帖子发表于 : 2010-05-07 9:59 

注册: 2008-05-14 18:53
帖子: 547
地址: 上海
送出感谢: 0 次
接收感谢: 0 次
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


页首
 用户资料  
 
8 楼 
 文章标题 : Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题
帖子发表于 : 2010-05-07 10:09 

注册: 2009-08-17 20:05
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
谢谢,我在添加了user=mysql后kill掉进程就启动mysql了。不添加这条,kill掉后自动又会新建一个启动脚本进程。我再看看问题出在哪里。


页首
 用户资料  
 
9 楼 
 文章标题 : Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题
帖子发表于 : 2010-07-05 0:05 

注册: 2009-11-23 11:53
帖子: 50
地址: 中国江苏省
送出感谢: 0 次
接收感谢: 0 次
我也想知道问题出在那里,为什么没有下文了。


页首
 用户资料  
 
10 楼 
 文章标题 : Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题
帖子发表于 : 2010-07-05 21:58 
头像

注册: 2007-11-26 19:10
帖子: 204
地址: 浙江省
送出感谢: 0 次
接收感谢: 0 次
期待更新。。。


_________________
代码:
# sudo apt-get --help
# .....
# remove 删除
# install 安装
# 本 APT 具有超级牛力。
# sudo apt-get remove window* && sudo apt-get install ubuntu && sudo init 1
# ......
# 正在为您配置NB的系统...
# 系统正在为您关机.....


Linux水吧


页首
 用户资料  
 
11 楼 
 文章标题 : Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题
帖子发表于 : 2010-07-09 13:00 

注册: 2009-08-17 20:05
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
问题就是user=mysql 没有加
在以前的ubuntu server不加也可以启动。10.04不加就无法启动了。必须以mysql用户启动mysqld


页首
 用户资料  
 
12 楼 
 文章标题 : Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题
帖子发表于 : 2011-02-09 21:28 

注册: 2008-11-20 12:49
帖子: 12
送出感谢: 0 次
接收感谢: 0 次
这个问题困扰了我将近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#)

希望对大家有用。


页首
 用户资料  
 
13 楼 
 文章标题 : Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题
帖子发表于 : 2011-09-25 11:02 
头像

注册: 2010-05-09 9:03
帖子: 140
送出感谢: 1
接收感谢: 1
我的还是不行~只要修改了my.cnf就无法重启,就算重启电脑也不行,添加了user=mysql了的~删掉/etc/my.cnf又能启动了。。。其实我只是想修改一下数据库的字符集 :em19


_________________
Blog
注册Dropbox!同涨空间 ^_^


页首
 用户资料  
 
14 楼 
 文章标题 : Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题
帖子发表于 : 2012-10-30 22:00 

注册: 2012-10-30 21:38
帖子: 1
系统: linux
送出感谢: 0 次
接收感谢: 0 次
我今天也遇到了这种情况。ubuntu10.04,新装mysql,开始能用,但发现character set server是latin1。上网搜,得知在my.cnf文件上加default character set = utf8。加后,mysql不能启动。没办法,删去重装,竟然还是不行,试多次,无果。

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

很鬱闷。

:em20


页首
 用户资料  
 
15 楼 
 文章标题 : Re: ubuntu 10.04 修改my.cnf后导致mysql服务无法启动的问题
帖子发表于 : 2014-12-29 15:07 

注册: 2008-11-20 12:49
帖子: 12
送出感谢: 0 次
接收感谢: 0 次
操作系统 ubuntu-14.04-amd64
新装mysql,开始能用,但发现character set server是latin1。上网搜,得知在my.cnf文件上加default character set = utf8。加后,mysql不能启动。
只好改回原来的my.cnf,然后重启mysql成功。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 15 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译