MySQL 数据库的数据目录是存储所有数据库和表数据的位置。有时候,由于磁盘空间的限制或其他原因,你可能需要将数据目录迁移到其他位置。以下是在 MySQL 8 中迁移数据目录的步骤。
教程
1、停止 MySQL 服务
首先,你需要停止正在运行的 MySQL 服务,以防止在迁移过程中有新的数据写入。你可以使用以下命令:
在 Ubuntu/Debian 系统中:
sudo systemctl stop mysql
在 CentOS/RHEL 系统中:
sudo systemctl stop mysqld
2、复制数据目录
默认情况下MySQL的数据目录位于 /var/lib/mysql/。你需要将整个目录复制到新的位置。例如,如果新的位置是 /newpath/mysql/
你可以使用以下命令,这个命令会保留原有的文件和目录权限:
sudo cp -R -p /var/lib/mysql /newpath
3、更新 MySQL 配置
接下来,你需要更新MySQL的配置文件,将数据目录的位置改为新的位置。配置文件通常位于 /etc/mysql/mysql.conf.d/mysqld.cnf或/etc/my.cnf
找到 [mysqld] 部分,修改datadir行为新的路径:
[mysqld]datadir=/newpath/mysql
4、修改AppArmor配置
如果你的系统是Ubuntu或Debian(centos不用) ,还需要更新 AppArmor 的配置。编辑 /etc/apparmor.d/usr.sbin.mysqld
文件,添加新的数据目录的权限:
/newpath/mysql/ r,/newpath/mysql/** rwk,
然后重载 AppArmor 配置:
sudo systemctl restart apparmor
5、修改SELinux配置CentOS/RHEL
之前有文章讲到过,推荐去看看把selinux关掉
https://vip.lzzcc.cn/Linux/781.html
6、启动 MySQL 服务
最后,你可以启动 MySQL 服务:
在 Ubuntu/Debian 系统中:
sudo systemctl start mysql
在 CentOS/RHEL 系统中:
sudo systemctl start mysqld
7、检查 MySQL 服务
你可以通过以下命令检查 MySQL 服务是否正常运行,并查看数据目录是否修改正确:
sudo systemctl status mysqlmysql -u root -p -e "SHOW VARIABLES WHERE Variable_name = \'datadir\';"
暂无评论内容