把mysql的数据文件目录/var/lib/mysql,移到其他地方。

谁都会走 提交于 2020-10-02 22:00:12

原因。

我们的数据库文件占用磁盘空间太大了,磁盘不够用,就移到一个新的磁盘。

移动方法。

我数准备把数据目录/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
为我解决了这个问题。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!