作者:西边升起的太阳2012 | 来源:互联网 | 2024-12-16 13:56
在CentOS 6.4 64位操作系统上安装MySQL 5.5.37时,遇到了启动失败的问题。尝试启动MySQL服务时,出现错误信息:“ERROR! The server quit without updating PID file (/home/mysql/log/mysql.pid)”。为了排查问题,首先检查了MySQL的错误日志:
140918 07:27:20 mysqld_safe Starting mysqld daemon with databases from /home/mysql/data
140918 07:27:20 [Warning] Although a path was specified for the --log-slow-queries option, log tables are used. To enable logging to files use the --log-output=file option.
140918 07:27:21 InnoDB: The InnoDB memory heap is disabled
140918 07:27:21 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140918 07:27:21 InnoDB: Compressed tables use zlib 1.2.3
140918 07:27:21 InnoDB: Initializing buffer pool, size = 4.0G
140918 07:27:22 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file /home/mysql/data/ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 536870912 bytes!
140918 07:27:22 [ERROR] Plugin 'InnoDB' init function returned error.
140918 07:27:22 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140918 07:27:22 [ERROR] Unknown/unsupported storage engine: INNODB
140918 07:27:22 [ERROR] Aborting
140918 07:27:22 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
140918 07:27:22 mysqld_safe mysqld from pid file /home/mysql/log/mysql.pid ended
从日志中可以看出,InnoDB日志文件的大小与配置文件中指定的大小不符。为了解决这个问题,需要删除旧的日志文件,然后重新启动MySQL服务:
[root@localhost etc]# rm /home/mysql/data/ib_logfile*
[root@localhost etc]# service mysqld start
Starting MySQL................................................ SUCCESS!
如果修改了InnoDB的缓冲池大小(innodb_buffer_pool_size),则需要删除原有的ib_logfile文件,因为在首次启动时,MySQL会重新创建这些文件,这可能会导致启动时间较长。
此外,如果在初始化MySQL之前未停止MySQL服务,也可能导致PID文件无法正确创建。正确的步骤应该是先停止MySQL服务,再进行初始化:
[root@localhost ~]# service mysqld stop
[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# cd data/
[root@localhost data]# rm -rf *
[root@localhost data]# cd ..
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/
初始化完成后,可以通过以下命令启动MySQL服务并设置root用户的密码:
./bin/mysqld_safe &
./bin/mysqladmin -u root password 'new-password'
./bin/mysqladmin -u root -h localhost.localdomain password 'new-password'
如果在启动过程中仍然遇到PID文件相关的问题,建议检查以下几个方面:
- 查看MySQL的错误日志文件,通常位于MySQL的数据目录下。
- 使用`ps aux | grep mysql`命令检查MySQL进程是否已存在。
- 确保MySQL用户对数据目录及其子目录具有适当的读写权限。
- 检查磁盘空间是否充足,使用`df -h`命令查看。
通过上述步骤,可以有效地解决MySQL启动失败及PID文件相关的问题。