随着 MySQL 运行时间的增加,
/var/lib/mysql
目录会逐渐变大,为了解决/var
分区空间不足的问题,需要迁移 MySQL 数据目录。
$ sudo systemctl stop mysql
# 查看原数据目录
$ mysql -uroot -p
mysql> show global variables like '%datadir%';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)
# 创建新数据目录
$ sudo mkdir /data/lib
# 拷贝原数据目录到新目录
$ sudo cp -rp /var/lib/mysql /data/lib/
MySQL 的配置文件为/etc/mysql/mysql.conf.d/mysqld.cnf
,编辑该文件(没有的话先手动创建)修改数据目录路径。
# 编辑 MySQL 配置文件
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 修改或添加以下配置项
datadir=/data/lib/mysql
修改 apparmor 配置文件,使 MySQL 有权限访问新数据目录。
# 编辑 apparmor 配置文件
$ sudo vim /etc/apparmor.d/usr.sbin.mysqld
# 添加以下内容
# Allow data dir access
/data/lib/mysql/ r,
/data/lib/mysql/** rwk,
# 重载配置文件
$ sudo systemctl daemon-reload
# 重启 apparmor 服务
$ sudo systemctl restart apparmor
# 重启 MySQL 服务
$ sudo systemctl restart mysql
# 查看 MySQL 数据目录
$ mysql -uroot -p
mysql> show global variables like '%datadir%';
+---------------+------------------+
| Variable_name | Value |
+---------------+------------------+
| datadir | /data/lib/mysql/ |
+---------------+------------------+
1 row in set (0.00 sec)
# 成功后删除原数据目录
$ sudo rm -rf /var/lib/mysql
参考链接: