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

编程

原因。

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

移动方法。

我数准备把数据目录/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

为我解决了这个问题。

以上是 把mysql的数据文件目录/var/lib/mysql,移到其他地方。 的全部内容, 来源链接: utcz.com/z/518707.html

回到顶部