移动数据目录后MySQL服务器不启动

我试图将MySQL的数据目录移动到一个外部驱动器上的一个odroid(覆盆子般的小型计算机)。

我正在使用Ubuntu 14.04。

我更改了包含/var/lib/mysql所有configuration文件中的path,并移动了我的新驱动器上的所有mysql文件夹。

该服务不再启动,我不知道如何解决这个问题。

这里有所有改变的path:

 root@odroid-server:/etc# grep -rnw '/etc' -e "/var/lib/mysql" root@odroid-server:/etc# grep -rnw '/etc' -e "/media/md0/mysql" /etc/apparmor.d/abstractions/mysql:12: /media/md0/mysql{,d}/mysql{,d}.sock rw, /etc/apparmor.d/tunables/alias:16:# alias /media/md0/mysql/ -> /home/mysql/, /etc/apparmor.d/usr.sbin.mysqld:49: /media/md0/mysql/ r, /etc/apparmor.d/usr.sbin.mysqld:50: /media/md0/mysql/** rwk, /etc/apparmor.d/usr.sbin.mysqld:53: /media/md0/mysql-files/ r, /etc/apparmor.d/usr.sbin.mysqld:54: /media/md0/mysql-files/** rwk, /etc/apparmor.d/usr.sbin.mysqld:57: /media/md0/mysql-keyring/ r, /etc/apparmor.d/usr.sbin.mysqld:58: /media/md0/mysql-keyring/** rwk, /etc/imscp/imscp.conf:37:DATABASE_DIR = /media/md0/mysql /etc/mysql/mysql.conf.d/mysqld.cnf:36:datadir = /media/md0/mysql /etc/mysql/mysql.conf.d/mysqld.cnf:92:# InnoDB is enabled by default with a 10MB datafile in /media/md0/mysql/. /etc/mysql/mysql.conf.d/mysqld.cnf:98:# chroot = /media/md0/mysql/ 

然后开始服务:

 root@odroid-server:/etc# service mysql start Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details. 

我试过这个命令的更多细节,我可以看到,它仍然使用旧的MySQL的datadir。

 root@odroid-server:/etc# journalctl -xe Nov 18 13:06:45 odroid-server systemd[1]: Starting MySQL Community Server... -- Subject: Unit mysql.service has begun start-up -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit mysql.service has begun starting up. Nov 18 13:06:45 odroid-server mysql-systemd-start[24276]: MySQL data dir not found at /var/lib/mysql. Please create one. Nov 18 13:06:45 odroid-server systemd[1]: mysql.service: Control process exited, code=exited status=1 Nov 18 13:06:45 odroid-server systemd[1]: Failed to start MySQL Community Server. -- Subject: Unit mysql.service has failed -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit mysql.service has failed. -- -- The result is failed. Nov 18 13:06:45 odroid-server systemd[1]: mysql.service: Unit entered failed state. Nov 18 13:06:45 odroid-server systemd[1]: mysql.service: Failed with result 'exit-code'. Nov 18 13:06:45 odroid-server systemd[1]: mysql.service: Service hold-off time over, scheduling restart. Nov 18 13:06:45 odroid-server systemd[1]: Stopped MySQL Community Server. -- Subject: Unit mysql.service has finished shutting down -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit mysql.service has finished shutting down. Nov 18 13:06:45 odroid-server systemd[1]: mysql.service: Start request repeated too quickly. Nov 18 13:06:45 odroid-server systemd[1]: Failed to start MySQL Community Server. -- Subject: Unit mysql.service has failed -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit mysql.service has failed. -- -- The result is failed. 

也许有一些命令将configuration文件重新加载到内存中?

来自评论:

只需将/var/lib/mysql符号链接到新目录即可。

制作符号链接是移动重要文件和目录的一种快速简便的方法。 无需更改任何configuration,并且只需要很less的文档就可以跟踪。

我刚刚find了一个解决scheme(几年后发生在我身上)。

问题简单的是,Ubuntu的服务器与恶意软件apparmor shipps。 我只注意到在检查dmesg 。 为了摆脱它,我只是跑了

 sudo apt remove --purge apparmor -y 

这使MySQL开始与我的新的MySQL的datadir(并解决了其他问题)。