先查看下当前MySQL 8.X的数据存储位置:
mysql -uroot -p
select @@datadir;
输出:
+-----------------+
| @@datadir |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)
可以看出,当前MySQL数据目录为默认的 /var/lib/mysql/ ,下来停止MySQL服务:
systemctl stop mysql
检查MySQL服务状态是否为 inactive
systemctl status mysql
下来我们使用同步命令来将原数据目录中的所有文件复制到新的目录 /mnt/vdb1/mysql 中:
rsync -av /var/lib/mysql /mnt/vdb1/mysql
以防万一,将原有的数据目录备份到/var/lib/mysql.bak :
mv /var/lib/mysql /var/lib/mysql.bak
然后对MySQL配置文件进行修改,指定新的数据存储目录:
nano /etc/mysql/mysql.conf.d/mysqld.cnf
找到 #datadir= 将前面的注释符#去掉,并修改为新的数据目录:
datadir= /mnt/vdb1/mysql
下来需要配置 AppArmor
nano /etc/apparmor.d/tunables/alias
修改成如下内容:
alias /var/lib/mysql/ -> /mnt/vdb1/mysql/,
重启AppArmor服务
systemctl restart apparmor
最后,我们为了能使MySQL启动脚本通过检测,需要建立个名为 /var/lib/mysql/mysql 的目录,这个目录没有实际作用,仅用来使MySQL的启动脚本能顺利检测运行环境,顺利启动。
mkdir /var/lib/mysql/mysql -p
最后启动MySQL服务
systemctl start mysql
检查MySQL服务支持状态是否为active
systemctl status mysql
为了稳妥起见,最好再登录MySQL使用 select @@datadir; 语句查看当前数据目录是否配置正确。
一切正常后,删除备份
rm -Rf /var/lib/mysql.bak