V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Reign
V2EX  ›  程序员

快被急疯了, MySQL 启动不了,始终显示“The server quit without updating PID file”

  •  
  •   Reign · 2016-08-10 06:29:45 +08:00 · 19895 次点击
    这是一个创建于 3035 天前的主题,其中的信息可能已经有所发展或是发生改变。
    昨晚睡了两个小时的觉,捣鼓了一晚上都不行,始终启动不了 MySQL

    系统是 centos6.5 安装的 AMH4.2 ,昨天下午网站始终打不开,于是我想重启 MySQL ,用 amh 自带的命令: amh mysql 然后选择 restart ,但是,那个 MySQL 一直关不了,等了好久都关不了,我一时心急,做出了一个错误的决定,关机重启,重启之后, amh 的 nginx 和 php 能正常启动,就是 MySQL 一直启动不了,我用 amh mysql 命令,选择了 start ,始终显示这个错误信息:

    [AMH] MySQL Management please select: (1~6)
    1) start 3) restart 5) force-reload
    2) stop 4) reload 6) exit

    Starting MySQL.The server quit without updating PID file (/[FAILED]l/mysql/data/ns471333.eu.pid).
    把网上的做饭全部试玩了都不行,比如这个帖子里面的: http://stackoverflow.com/questions/4963171/mysql-server-startup-error-the-server-quit-without-updating-pid-file

    求 MySQL 高手解疑一下吧,谢谢,谢谢
    -------------------------------------------------------------------------------------------------------------------------------
    这是error.log信息:
    160810 00:15:00 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
    160810 0:15:00 [Note] Plugin 'InnoDB' is disabled.
    22:15:00 UTC - mysqld got signal 11 ;
    This could be because you hit a bug. It is also possible that this binary
    or one of the libraries it was linked against is corrupt, improperly built,
    or misconfigured. This error can also be caused by malfunctioning hardware.
    We will try our best to scrape up some info that will hopefully help
    diagnose the problem, but since we have already crashed,
    something is definitely wrong and this may fail.

    key_buffer_size=16777216
    read_buffer_size=262144
    max_used_connections=0
    max_threads=151
    thread_count=0
    connection_count=0
    It is possible that mysqld could use up to
    key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 133467 K bytes of memory
    Hope that's ok; if not, decrease some variables in the equation.

    Thread pointer: 0x0
    Attempting backtrace. You can use the following information to find out
    where mysqld died. If you see no messages after this, something went
    terribly wrong...
    stack_bottom = 0 thread_stack 0x30000
    /usr/local/mysql/bin/mysqld(my_print_stacktrace+0x33)[0x838bdb3]
    /usr/local/mysql/bin/mysqld(handle_fatal_signal+0x432)[0x8280302]
    [0xa0af2400]
    /usr/local/mysql/bin/mysqld(wait_for_free_space+0x5c)[0x837368c]
    /usr/local/mysql/bin/mysqld(my_write+0x102)[0x838a602]
    /usr/local/mysql/bin/mysqld(my_b_flush_io_cache+0x43a)[0x8376dfa]
    /usr/local/mysql/bin/mysqld(_ZN13MYSQL_BIN_LOG21sync_purge_index_fileEv+0x20)[0x82fcc10]
    /usr/local/mysql/bin/mysqld(_ZN13MYSQL_BIN_LOG4openEPKc13enum_log_typeS1_10cache_typebmbb+0xc9)[0x83027a9]
    /usr/local/mysql/bin/mysqld[0x812a116]
    /usr/local/mysql/bin/mysqld(_Z11mysqld_mainiPPc+0x3a1)[0x812c9d1]
    /usr/local/mysql/bin/mysqld(main+0x1b)[0x8123edb]
    /lib/libc.so.6(__libc_start_main+0xe6)[0xa07c7d26]
    /usr/local/mysql/bin/mysqld[0x8123e21]
    The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
    information that should help you find out what is causing the crash.
    160810 00:15:00 mysqld_safe mysqld from pid file /usr/local/mysql/data/ns471333.eu.pid ended
    160810 00:21:36 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
    160810 0:21:36 [Note] Plugin 'InnoDB' is disabled.
    22:21:36 UTC - mysqld got signal 11 ;
    This could be because you hit a bug. It is also possible that this binary
    or one of the libraries it was linked against is corrupt, improperly built,
    or misconfigured. This error can also be caused by malfunctioning hardware.
    We will try our best to scrape up some info that will hopefully help
    diagnose the problem, but since we have already crashed,
    something is definitely wrong and this may fail.

    key_buffer_size=16777216
    read_buffer_size=262144
    max_used_connections=0
    max_threads=151
    thread_count=0
    connection_count=0
    It is possible that mysqld could use up to
    key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 133467 K bytes of memory
    Hope that's ok; if not, decrease some variables in the equation.
    Thread pointer: 0x0
    Attempting backtrace. You can use the following information to find out
    where mysqld died. If you see no messages after this, something went
    terribly wrong...
    stack_bottom = 0 thread_stack 0x30000
    /usr/local/mysql/bin/mysqld(my_print_stacktrace+0x33)[0x838bdb3]
    /usr/local/mysql/bin/mysqld(handle_fatal_signal+0x432)[0x8280302]
    [0xa52d9400]
    /usr/local/mysql/bin/mysqld(wait_for_free_space+0x5c)[0x837368c]
    /usr/local/mysql/bin/mysqld(my_write+0x102)[0x838a602]
    /usr/local/mysql/bin/mysqld(my_b_flush_io_cache+0x43a)[0x8376dfa]
    /usr/local/mysql/bin/mysqld(_ZN13MYSQL_BIN_LOG21sync_purge_index_fileEv+0x20)[0x82fcc10]
    /usr/local/mysql/bin/mysqld(_ZN13MYSQL_BIN_LOG4openEPKc13enum_log_typeS1_10cache_typebmbb+0xc9)[0x83027a9]
    /usr/local/mysql/bin/mysqld[0x812a116]
    /usr/local/mysql/bin/mysqld(_Z11mysqld_mainiPPc+0x3a1)[0x812c9d1]
    /usr/local/mysql/bin/mysqld(main+0x1b)[0x8123edb]
    /lib/libc.so.6(__libc_start_main+0xe6)[0xa4faed26]
    /usr/local/mysql/bin/mysqld[0x8123e21]
    The manual page at http://dev.mysql.com/do160810 00:21:36 mysqld_safe mysqld from pid file /usr/local/mysql/data/ns471333.eu.pid ended
    第 1 条附言  ·  2016-08-10 10:56:28 +08:00
    感谢各位回答,刚刚 df -h 才发现,硬盘被撑爆了(笑哭脸),终于找到原因了,希望大家引以为戒
    42 条回复    2016-08-13 21:21:57 +08:00
    qiayue
        1
    qiayue  
       2016-08-10 06:44:08 +08:00 via Android   ❤️ 1
    曾经遇到过几次,按照网上搜索的办法都解决了

    你看看是不是硬盘满了,然后该删的删
    Reign
        2
    Reign  
    OP
       2016-08-10 06:46:49 +08:00
    @qiayue 硬盘 2T ,剩余空间太多了
    jugelizi
        3
    jugelizi  
       2016-08-10 06:54:05 +08:00
    记得好几次 centos 断电重启 MySQL 服务需要删除 my.cnf 才能起来
    Reign
        4
    Reign  
    OP
       2016-08-10 06:56:37 +08:00
    @jugelizi 试了的,删了 my.cnf 还是启动不了 MySQL
    gzlock
        5
    gzlock  
       2016-08-10 06:59:14 +08:00 via Android
    docker 保平安
    Bardon
        6
    Bardon  
       2016-08-10 07:56:31 +08:00
    是重启的时候没有清理掉 pid file 么?
    rm ns*.eu.pid 试试
    再 rm *.local.err 后重启 mysql 试试
    newghost
        7
    newghost  
       2016-08-10 08:00:37 +08:00
    160810 0:15:00 [Note] Plugin 'InnoDB' is disabled.


    你用的什么引擎?
    wander2008
        8
    wander2008  
       2016-08-10 08:12:32 +08:00 via iPhone
    你可以删除上面说的 pidfile 试试。我感觉好像是权限的问题。
    Reign
        9
    Reign  
    OP
       2016-08-10 08:27:26 +08:00
    @newghost myisam
    Reign
        10
    Reign  
    OP
       2016-08-10 08:30:02 +08:00
    @wander2008 mysql 文件夹权限都-R 设置成 755 了,用户名和组都是 MySQL
    davidyin
        11
    davidyin  
       2016-08-10 08:31:04 +08:00
    删掉 pid 文件,再启动 mysql 。
    查看一下 pid 文件的权限。

    基本就这两条。
    xiaobu
        12
    xiaobu  
       2016-08-10 08:32:09 +08:00
    error 日志看下,里面有提示的
    blacklee
        13
    blacklee  
       2016-08-10 08:32:18 +08:00
    #6 应该是对的,至少我在 Mac 上碰到这个错误消息的时候这么处理是 OK 的。
    Reign
        14
    Reign  
    OP
       2016-08-10 08:33:09 +08:00
    @davidyin 里面就没有找到 pid 文件,我停止 MySQL 都显示: MySQL server PID file could not be found! mysql 文件夹下面全都是可写的
    wander2008
        15
    wander2008  
       2016-08-10 08:35:23 +08:00 via iPhone
    @Reign mysql 这货文件权限好像还挺奇怪的。你看看配置文件里面的 datadir 指定到默认配置试试。还原默认配置。以前也遇到 pid 问题。
    Reign
        16
    Reign  
    OP
       2016-08-10 08:37:14 +08:00
    @Bardon 把这两个删完了都不行,还是抛出那个错误
    davidyin
        17
    davidyin  
       2016-08-10 08:38:03 +08:00
    @Reign
    /usr/local/mysql/data/ns471333.eu.pid
    建议命令行手工安装 mysql 。
    不懂 AMH 控制面板。
    petelin
        18
    petelin  
       2016-08-10 08:40:29 +08:00 via Android
    我遇到过改的是 mysql 目录权限 777 ,突然就好了,,,很诡异, mac
    Reign
        19
    Reign  
    OP
       2016-08-10 08:49:50 +08:00
    @petelin 这么做也不行
    xi_lin
        20
    xi_lin  
       2016-08-10 08:57:50 +08:00
    你找找你机器上有几个 my.cnf
    分别看看相应的配置目录下有没有 pid 文件
    Neveroldmilk
        21
    Neveroldmilk  
       2016-08-10 09:01:56 +08:00
    估计是没改对 mysql 的 my.cnf 。 mysql 的版本以及 Linux 发行版不同,配置文件的路径大不相同。
    notolddriver
        22
    notolddriver  
       2016-08-10 09:06:17 +08:00
    首先使用 ps -ef |grep mysqld 查看下 pid
    然后 kill -9 pid
    再重启 mysql 试下 一般会正常


    不行的话:

    源码包解压出来的目录下 support-files/目录下 拷贝 my.cnf 的 模板文件


    我拷贝的这个
    cp ./support-files/my-innodb-heavy-4G.cnf /etc/mysql/my.cnf


    记得一定在重启前 杀掉 mysql 的进程

    配置的 my.cnf 文件有问题
    Reign
        23
    Reign  
    OP
       2016-08-10 09:18:45 +08:00
    @xi_lin
    @Neveroldmilk

    # locate my.cnf
    /etc/my.cnf
    /usr/local/mysql/mysql-test/include/default_my.cnf
    /usr/local/mysql/mysql-test/suite/federated/my.cnf
    /usr/local/mysql/mysql-test/suite/rpl/my.cnf
    只有第一个了
    yanyandenuonuo
        24
    yanyandenuonuo  
       2016-08-10 09:23:22 +08:00
    内存爆了吧。。试试加内存或者 swap
    Reign
        25
    Reign  
    OP
       2016-08-10 09:27:20 +08:00
    @yanyandenuonuo 话说 我的内存消耗咋这么大,什么程序都没运行啊
    total used free shared buffers cached
    Mem: 4020 2514 1506 0 478 1774
    -/+ buffers/cache: 262 3758
    Swap: 510 0 510
    SharkIng
        26
    SharkIng  
       2016-08-10 09:29:21 +08:00
    删了 my.cnf????? 什么鬼点子?

    我遇到过一个类似的问题,(忘记 Error Message 是什么了)你注意一下,你的 my.cnf 是 MySQL 的配置文件,你删了肯定不能用了啊.....

    你要是安装的那种一键安装或者集成的 LN(A)MP 之类的东西,一般的文件是安装在 /usr/local/里面的,你的 MySQL 配置文件应该是在 /etc/mysql/my.cnf 之类的地方。如果你系统 Somehow 又安装了一遍 MySQL ,那么有可能你的配置文件默认到了 /etc/my.cnf 上,你确认下你是不是有两个 my.cnf

    我当时遇到的问题是无法启动,研究半天发现是 my.cnf 的配置上的一些内容不一样,例如数据库的位置等等,解决办法你把两个弄成一样的就行了(除非你想去研究哪个是正确的配置问题)
    Reign
        27
    Reign  
    OP
       2016-08-10 09:30:59 +08:00
    @yanyandenuonuo 清理掉内存启动 mysql 还是抛出一样错误
    Reign
        28
    Reign  
    OP
       2016-08-10 09:32:41 +08:00
    @SharkIng 只有一个 /etc/my.cnf
    whisperer
        29
    whisperer  
       2016-08-10 09:39:09 +08:00
    我以前遇到过这个错误,你参考下(当时我用的是 wdlinux ):

    修改 /www/wdlinux/init.d/mysqld

    ```
    basedir=
    datadir=
    ```

    修改为
    ```
    basedir=/www/wdlinux/mysql
    datadir=/www/wdlinux/mysql/var
    ```
    Reign
        30
    Reign  
    OP
       2016-08-10 09:49:26 +08:00
    @whisperer 把这些都加进去了还是抛出一样的错误
    ETiV
        31
    ETiV  
       2016-08-10 10:15:17 +08:00
    22:21:36 UTC - mysqld got signal 11 ;
    This could be because you hit a bug. It is also possible that this binary
    or one of the libraries it was linked against is corrupt, improperly built,
    or misconfigured.

    回复里没法加粗...

    这个出现了两次,说明相同的错误导致崩溃,然后 mysqld 尝试了一次自动重启,但还是没有起来。

    这里说的已经很清楚了,要么是 bug ,要么是你的二进制文件、依赖库有问题导致的。

    你换一个安装方式吧,找个 yum 官方源镜像什么的重新装 mysql 。

    别围绕“ pid 文件”搞,方向不对的。
    gaocheng
        32
    gaocheng  
       2016-08-10 10:19:28 +08:00
    sudo su mysql 之后再启动试试
    defunct9
        33
    defunct9  
       2016-08-10 10:22:59 +08:00
    交出权限, ssh 上去帮你搞好
    xi2008wang
        34
    xi2008wang  
       2016-08-10 10:32:41 +08:00
    重装 mysql 吧,很大可能强制系统重启时 mysql 文件损坏了。

    如果只是 mysql 损坏还好,重装就好了,如果数据也损坏就杯具了。
    Troevil
        35
    Troevil  
       2016-08-10 10:35:54 +08:00
    我也遇到过, 我是几次强制重启后出现的, 找了不少教程都没用, 最后还是保存数据文件,重装 amh 才 ok 的..
    happywowwow
        36
    happywowwow  
       2016-08-10 10:37:12 +08:00
    Inodes 满了?...
    realpg
        37
    realpg  
       2016-08-10 10:53:23 +08:00
    看楼上最开始那几层楼,笑喷了……
    让人删配置文件……
    wweir
        38
    wweir  
       2016-08-10 10:59:19 +08:00
    你需要做的是缩小故障域。
    mysqld 直接加参数 带上原来的 my.cnf 启动,看效果
    liuzhedash
        39
    liuzhedash  
       2016-08-10 11:12:57 +08:00   ❤️ 1
    @realpg 删配置在特定条件下是有道理的:
    1 、通过源码安装 mysql 到 /usr/local/mysql ,并启动服务,此时 my.cnf 路径在 /etc
    2 、通过软件源安装 mysql-common ,会在 /etc/mysql 下放一个 my.cnf
    3 、此时重启 mysql ,默认会读取 /etc/mysql/my.cnf ,所以找不到 pid 文件( pid 文件在 /usr/local/mysql )
    4 、删除 /etc/mysql 下的 my.cnf , mysql 就会读取 /etc 下的 my.cnf ,于是一切都正常了

    这个本质问题是读错了配置文件,当然不一定符合事实情况,而且这一票教程都没解释原因。。。
    SmiteChow
        40
    SmiteChow  
       2016-08-10 11:23:26 +08:00
    备份一下数据,重新安装。
    fuxkcsdn
        41
    fuxkcsdn  
       2016-08-11 08:43:30 +08:00 via iPhone
    @realpg
    +10086
    难道前面几楼都不看日志的吗?? 233333
    还有层主啊,一楼就告诉你检查硬盘空间了,试都不试骗回复吧
    HXM
        42
    HXM  
       2016-08-13 21:21:57 +08:00
    @liuzhedash 谢谢你的答案,帮助我解决了问题:)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1073 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:29 · PVG 07:29 · LAX 15:29 · JFK 18:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.