|#Stop MySQL before moving its stuff around
shell> service mysql stop#Copy data folder to 2nd disk preserving its permissions
shell> cp -rp /var/lib/mysql /data#Create my.cnf by coping from sample .cnf file provided with MySQL installation
shell> cp /usr/share/mysql/my-huge.cnf /etc/my.cnf#Edit (shell> vi /etc/my.cnf) to fix paths for socket file, add data option
... [client] ... socket = /data/mysql/mysql.sock ... [mysqld] datadir = /data/mysql socket = /data/mysql/mysql.sock ...#Start the server
shell> service mysql start#Error message ?
Starting MySQL.. ERROR! The server quit without updating PID file (/data/mysql/master.home.pid).#Checking MySQL status returns this error ?
shell> service mysql status ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists#Error log is not updated at all ? (/data/mysql/master.home.err). If that all happens to you, than most probably the issue is caused by SELinux. You can double-check whether you have it ON. If you see this ...
sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 24 Policy from config file: targeted#then you have SELinux on. (If you see that SELinux is disabled, then probably you have another problem you'll need to attend to.) #You can turn SELinux off by editing file (/etc/selinux/config - update, SELINUX=disabled, save, reboot) but this will reduce the security of your system and is not recommended. It is a berter solution to tell SELinux your new location for MySQL databases must have applied the proper security context (the one used for MySQL databases). #Check the security type of default database folder and new location:
shell> ls -dZ /var/lib/mysql drwxr-xr-x. mysql mysql system_u:object_r:mysqld_db_t:s0 /var/lib/mysql/ shell> ls -dZ /data/mysql drwxr-xr-x. mysql mysql system_u:object_r:default_t:s0 /data/mysql/#This difference causes the error message at MySQL startup. Fix it. #Check whether you have policycoreutils-python package installed.
shell> yum install policycoreutils-python#Map proper security context definition to new db locaion
shell> semanage fcontext --add --type mysqld_db_t '/data/mysql(/.*)?'#Label new db location by security context just defined:
shell> restorecon -r /data/mysql#Check whether you have got proper labeling for new db location:
shell> ls -dZ /data/mysql drwxr-xr-x. mysql mysql system_u:object_r:mysqld_db_t:s0 /data/mysql/#Reboot
shell> reboot#After reboot you should have MySQL running ok:
shell> service mysql status SUCCESS! MySQL running (2006)#Also you should be able restart it successfully:
shell> service mysql restart Shutting down MySQL. SUCCESS! Starting MySQL.. SUCCESS!(Based on http://forums.mysql.com/read.php?10,520100,520469#msg-520469)
Last updated 30 Sep 2013