需将MySQL datadir从系统盘迁至其他分区以释放空间或提升I/O性能,操作包括:停止服务、确认原路径、创建新目录并迁移数据、修改my.cnf中datadir、更新服务脚本参数、验证后重启。

如果您已成功安装宝塔面板,但希望将MySQL数据库的默认数据存放路径从系统盘迁移到其他挂载的磁盘分区,以释放系统盘空间或提升I/O性能,则需调整MySQL的datadir配置并迁移现有数据。以下是具体操作步骤:
一、停止MySQL服务并确认当前数据路径
修改前必须确保MySQL处于停止状态,避免文件损坏;同时需准确识别当前datadir位置,为后续迁移提供依据。
1、登录宝塔面板,在左侧菜单点击【软件商店】,找到已安装的MySQL,点击右侧【停止】按钮。
2、通过SSH连接服务器,执行命令:mysql -V 确认MySQL版本,不同版本配置文件路径略有差异。
3、执行命令:ps aux | grep mysql 查看MySQL进程启动参数,定位当前datadir值(通常在--datadir=后)。
4、执行命令:cat /www/server/mysql/my.cnf | grep datadir 直接读取配置文件中的datadir行。
二、创建新数据目录并迁移原始数据
新建目标目录需具备正确权限与SELinux上下文(如启用),且必须完全复制原数据目录结构与所有权,否则MySQL无法启动。
1、执行命令创建新目录,例如迁移到/data/mysql:mkdir -p /data/mysql。
2、执行命令复制全部数据(保留权限、时间戳、符号链接):cp -a /www/server/mysql/data/* /data/mysql/。
3、执行命令修改新目录归属:chown -R mysql:mysql /data/mysql。
4、若系统启用SELinux,执行命令恢复上下文:semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?" && restorecon -Rv /data/mysql。
三、修改MySQL配置文件指向新路径
配置文件是MySQL启动时读取datadir的唯一依据,必须精确修改对应段落,且不能存在重复或注释干扰项。
1、使用vim编辑配置文件:vim /www/server/mysql/my.cnf。
2、在[mysqld]段落下查找datadir行,将其修改为:datadir = /data/mysql。
3、检查同一段落内是否还存在其他datadir行,如有则删除或注释(在行首加#)。
4、保存并退出vim(输入:wq回车)。
四、更新系统服务脚本中的数据路径参数
部分MySQL版本(如5.7+)的服务启动脚本会硬编码datadir路径,若不修改会导致systemd或init.d启动失败。
1、执行命令查看MySQL服务文件路径:find /usr -name "*mysql*" -type f 2>/dev/null | grep -E "(service|script)"。
2、常见路径为:/etc/init.d/mysqld 或 /usr/lib/systemd/system/mysqld.service。
3、若为systemd服务,编辑该文件:vim /usr/lib/systemd/system/mysqld.service,查找Environment="MYSQLD_OPTS="行,在其后添加--datadir=/data/mysql。
4、执行命令重载配置:systemctl daemon-reload。
五、验证路径修改并重启MySQL
启动前需验证新路径下文件完整性及权限,启动后需确认数据库实例可正常响应查询请求。
1、执行命令检查新目录下是否存在ibdata1、mysql、performance_schema等关键子目录:ls -l /data/mysql/。
2、执行命令手动启动MySQL并观察输出:/www/server/mysql/bin/mysqld --defaults-file=/www/server/mysql/my.cnf --user=mysql --console。
3、如无报错信息且出现“ready for connections”,按Ctrl+C终止前台进程。
4、返回宝塔面板,点击MySQL【启动】按钮,或执行:systemctl start mysqld。










