检测当前数据目录
默认数据目录位于/var/lib/mysql。
mysql> show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
暂停MySQL服务
暂停MySQL服务。
sudo systemctl stop mysql
在新位置创建目录并将所有权更改到MySQL下
sudo mkdir -pv /mysqldata
sudo chown -R mysql:mysql /mysqldata
复制数据
使用rsync工具或cp将原数据库的数据移动到新的数据目录中
sudo rsync -av /var/lib/mysql /mysqldata
配置访问控制
在Ubuntu系统中,如果启用了AppArmor服务,需要配置对服务文件系统的访问控制。
sudo vim /etc/apparmor.d/tunables/alias
allias /var/lib/mysql/ -> /mysqldata/mysql/,
重启AppArmor服务。
sudo systemctl restart apparmor
重新启动MySQL服务器并确认数据目录已更改
sudo systemctl start mysql
mysql> show variables like '%datadir%';
+---------------+-------------------+
| Variable_name | Value |
+---------------+-------------------+
| datadir | /mysqldata/mysql/ |
+---------------+-------------------+
删除旧的数据目录
验证数据完整后可以删除原数据目录。
sudo rm -rf /var/lib/mysql