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

原创
2020/07/25 22:43
阅读数 603

原因。

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

移动方法。

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

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部