原因。
我们的数据库文件占用磁盘空间太大了,磁盘不够用,就移到一个新的磁盘。
移动方法。
我数准备把数据目录/var/lib/mysql
移到/data/var/lib/
。
#停止mysql
sudo systemctl stop mysql.service
#把数据目录`/var/lib/mysql`,剪切到`/data/var/lib/`
mv /var/lib/mysql /data/var/lib/
#在`/var/lib/`目录创建mysql文件夹
mkdir mysql
#把`/var/lib/mysql`文件夹的所属组、所有人改一下。
sudo chown -R mysql:mysql /var/lib/mysql
#把`/var/lib/mysql`目录绑定到新的数据目录 `data/var/lib/mysql/`
mount --bind /data/var/lib/mysql/ /var/lib/mysql
#重启mysql
sudo systemctl start mysql.service
注意事项。
千万不能通过创建链接
的方式把/var/lib/mysql
关联到新的数据目录。这样做会导致数据文件有权限问题,mysql重启不了。
关于这一点的说明参考:
https://dba.stackexchange.com/questions/106085/cant-create-file-var-lib-mysql-user-lower-test
当我尝试将/var/lib/mysql移到另一个磁盘并用符号链接替换原始目录时,问题发生在我身上。 Apparmor将拒绝此配置中的访问,请参见:
https://bugs.launchpad.net/apparmor/+bug/1485055
为什么Apparmor开发人员认为这不是bug。解决方法是使用绑定安装。请看 https://unix.stackexchange.com/questions/198590/what-is-a-bind-mount 进行解释。 所以
mount --bind /newmysqldatadir /var/lib/mysql
service mysql start
为我解决了这个问题。
来源:oschina
链接:https://my.oschina.net/kunBlog/blog/4436670