After building and deploying a new CentOS 6.2 server yesterday, I have been setting it up to act as a MySQL master for replication. I have made the necessary changes to /etc/my.cnf and added some optimisations.
When I tried to restart the mysqld service I received the error "MySQL Daemon failed to start." which comes from the init script. Not particularly helpful for identifying the problem and the error log wasn't much better:
120203 10:08:04 [Note] /usr/libexec/mysqld: Normal shutdown 120203 10:08:04 [Note] Event Scheduler: Purging the queue. 0 events 120203 10:08:04 InnoDB: Starting shutdown... 120203 10:08:09 InnoDB: Shutdown completed; log sequence number 0 44233 120203 10:08:09 [Note] /usr/libexec/mysqld: Shutdown complete 120203 10:08:09 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
In order to troubleshoot mysql problems it is helpful to attempt to start MySQLd manually and make it a bit more verbose. To do this run the following command as root:
[root@server / ]# /usr/libexec/mysqld --user=mysql --verbose 120203 10:14:44 [ERROR] /usr/libexec/mysqld: unknown option '--skip-bdb' 120203 10:14:44 [ERROR] Aborting 120203 10:14:44 [Note] /usr/libexec/mysqld: Shutdown complete
Now that is a bit more helpful. In this example I have used an option "skip-bdb" which is now deprecated. Removing that from /etc/my.cnf fixed allowed the service to start without error.