bitscn.com 之前启动mysql时,就不太正常,要多重启几次,不过能启动,也就没放在心上,今天测试测试又出现了问题,mysql 启动正常,但是无法关闭:
[root@rac2 mysql]# service mysql stop
mysql server pid file could not befound! [failed]
[root@rac2 mysql]# ./mysql.server stop
mysql server pid file could not befound! [failed]
这里提示的pid 文件指:/var/lib/mysql/rac2.pid,该文件和/var/lib/mysql/mysql.sock 文件一样,仅在mysql 运行时存在,后来的验证如下:
[root@rac2 lib]# ls /var/lib/mysql/rac2.pid
/var/lib/mysql/rac2.pid
[root@rac2 lib]# service mysql stop
shutting down mysql. [ ok ]
[root@rac2 lib]# ls /var/lib/mysql/rac2.pid
ls: /var/lib/mysql/rac2.pid: no such fileor directory
所以当我的mysql 运行正常时,应该是存在这个文件的,google的一个说法是my.cnf 参数文件的basedir 参数错误,注释掉这个参数即可,但是我都没有设过这个参数,所以和这个应该没有关系。
查看了一下默认值:
mysql> show variables like '%basedir%';
+---------------+-------+
| variable_name | value |
+---------------+-------+
| basedir | /usr |
+---------------+-------+
1 row in set (0.00 sec)
[root@rac2 ~]# ps -ef|grep mysql
root 2161 1 0 09:38 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe--datadir=/var/lib/mysql --pid-file=/var/lib/mysql/rac2.pid
mysql 2418 2161 0 09:38 ? 00:00:00 /usr/sbin/mysqld --basedir=/usr--datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql--log-error=/var/lib/mysql/rac2.err --pid-file=/var/lib/mysql/rac2.pid--socket=/var/lib/mysql/mysql.sock --port=3306
root 3628 3596 0 09:57 pts/1 00:00:00 grep mysql
--log信息
[root@rac2 ~]#cat /var/lib/mysql/rac2.err
111129 9:38:49 [note] plugin 'federated' is disabled.
111129 9:38:49 innodb: the innodb memory heap is disabled
111129 9:38:49 innodb: mutexes and rw_locks use gcc atomic builtins
111129 9:38:49 innodb: compressed tables use zlib 1.2.3
111129 9:38:49 innodb: using linux native aio
111129 9:38:49 innodb: initializing buffer pool, size = 128.0m
111129 9:38:50 innodb: completed initialization of buffer pool
111129 9:38:50 innodb: highest supported file format is barracuda.
111129 9:38:50 innodb: waiting for thebackground threads to start
111129 9:38:51 innodb: 1.1.8 started; log sequence number 1605950
111129 9:38:52 [note] event scheduler: loaded 0 events
111129 9:38:52 [note] /usr/sbin/mysqld: ready for connections.
version: '5.5.15-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 mysql community server (gpl)
111129 10:50:36 mysqld_safe starting mysqlddaemon with databases from /var/lib/mysql
111129 10:50:37 [note] plugin 'federated'is disabled.
111129 10:50:37 innodb: the innodb memoryheap is disabled
111129 10:50:37 innodb: mutexes andrw_locks use gcc atomic builtins
111129 10:50:37 innodb: compressed tablesuse zlib 1.2.3
111129 10:50:37 innodb: using linux nativeaio
111129 10:50:37 innodb: initializing bufferpool, size = 128.0m
111129 10:50:37 innodb: completedinitialization of buffer pool
innodb: unable to lock ./ibdata1, error: 11
innodb: check that you do not already haveanother mysqld process
innodb: using the same innodb data or logfiles.
111129 10:50:37 innodb: retrying to lock the first data file
innodb: unable to lock ./ibdata1, error: 11
innodb: check that you do not already haveanother mysqld process
innodb: using the same innodb data or logfiles.
…
innodb: check that you do not already haveanother mysqld process
innodb: using the same innodb data or logfiles.
innodb: unable to lock ./ibdata1, error: 11
innodb: check that you do not already haveanother mysqld process
--这个提示的意思有多个mysqld 进程在运行。
解决方法:
(1)重新用:ps -ef|grep mysql 查询所有的进程,然后把所有的进程kill掉,
(2)重新对相关的目录赋权
[root@rac2 /]# chown mysql.mysql -r/var/lib/mysql/*
[root@rac2 /]# chmod 755 -r/var/lib/mysql/*
--再次启动成功:
[root@rac2 /]# service mysql start
starting mysql...... [ ok ]
[root@rac2 /]# ps -ef|grep mysql
root 27936 1 1 14:08 pts/1 00:00:00 /bin/sh /usr/bin/mysqld_safe--datadir=/var/lib/mysql --pid-file=/var/lib/mysql/rac2.pid
mysql 28193 27936 3 14:08 pts/1 00:00:00 /usr/sbin/mysqld --basedir=/usr--datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql--log-error=/var/lib/mysql/rac2.err --pid-file=/var/lib/mysql/rac2.pid--socket=/var/lib/mysql/mysql.sock --port=3306
root 28220 3596 0 14:08 pts/1 00:00:00 grep mysql
[root@rac2 /]# ll /var/lib/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 nov 29 14:08/var/lib/mysql/mysql.sock
再次查看log:
[root@rac2 lib]# tail -20 /var/lib/mysql/rac2.err
111129 14:51:53 [note] event scheduler:purging the queue. 0 events
111129 14:51:53 innodb: starting shutdown...
111129 14:51:54 innodb: shutdown completed; log sequencenumber 1605950
111129 14:51:54 [note] /usr/sbin/mysqld:shutdown complete
111129 14:51:54 mysqld_safe mysqld from pidfile /var/lib/mysql/rac2.pid ended
111129 14:53:34 mysqld_safe starting mysqlddaemon with databases from /var/lib/mysql
111129 14:53:34 [note] plugin 'federated'is disabled.
111129 14:53:34 innodb: the innodb memoryheap is disabled
111129 14:53:34 innodb: mutexes andrw_locks use gcc atomic builtins
111129 14:53:34 innodb: compressed tablesuse zlib 1.2.3
111129 14:53:34 innodb: using linux nativeaio
111129 14:53:34 innodb: initializing bufferpool, size = 128.0m
111129 14:53:34 innodb: completed initializationof buffer pool
111129 14:53:35 innodb: highest supportedfile format is barracuda.
111129 14:53:35 innodb:1.1.8 started; log sequence number 1605950
111129 14:53:35 [warning] neither--relay-log nor --relay-log-index were used; so replication may break when thismysql server acts as a slave and has his hostname changed!! please use'--relay-log=rac2-relay-bin' to avoid this problem.
111129 14:53:35 [note] event scheduler:loaded 0 events
111129 14:53:35 [note]/usr/sbin/mysqld: ready for connections.
version: '5.5.15-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 mysql community server (gpl)
[root@rac2 lib]#
说明:
因为之前没有保留的相关信息,修改之后,虽重复模拟多次,都不能还原当时的故障,所有缺少足够多的一手资料来证明这个问题。但是我这里的2种方法都可以尝试一下:
mysql server pid file could not befound!
--可能是相关目录的权限问题导致
check that you do not already have anothermysqld process
--重复进程导致,可以先ps,在kill掉相关进程在重试。
作者 tianlesoftware
bitscn.com