Linux中将MySQL数据库目录从/var/lib/mysql迁移到/home/mysql_data/mysql的操作指南
本文将介绍如何将 Linux 系统中的 MySQL 数据库默认目录 /var/lib/mysql 迁移至自定义路径 /home/mysql_data/mysql。操作包括停止服务、安全复制文件、修改核心配置文件以适配新路径,以及建立必要的软链接,确保 MySQL 服务正常启动。
迁移结果与目标
本操作旨在将 MySQL 的数据存放位置从系统默认的 /var/lib/mysql 转移到空间更充裕的 /home/mysql_data/mysql 目录。完成后,MySQL 的各项功能应保持正常,且原有数据完整无缺。
准备条件
- 权限要求:操作需使用具有 sudo 权限的用户执行,因为涉及系统级文件和服务的控制。
- 备份建议:虽然以下步骤采用复制方式以降低风险,但在进行任何系统配置变更前,建议先对关键数据进行独立备份。
- 环境确认:确认目标路径
/home/mysql_data存在且拥有足够的存储空间。
真实操作顺序
第1步:停止 MySQL 服务
为了防止数据不一致,首先必须停止正在运行的 MySQL 进程。kloxo 面板环境下若无法获取 root 密码,推荐使用系统服务管理命令。
# service mysqld stop
完成状态判断:执行后若无报错,可使用 ps -ef | grep mysql 检查进程是否已完全退出。
第2步:复制数据库文件
进入原始目录,将 mysql 文件夹完整复制到新的位置。务必使用 -a 参数,该参数等价于 -dR,用于保留文件的权限、所有权及时间戳,这是防止后续启动失败的关键。
# cd /var/lib
# ls
# cp -a mysql /home/mysql_data/
注意:如果数据库体积较大,此过程可能需要较长时间,请确保网络连接稳定以防超时中断。
第3步:修改主配置文件
编辑 /etc/my.cnf,修改两项关键参数:
- datadir:指向新目录
/home/mysql_data/mysql。 - socket:指向新目录下的 socket 文件路径
/home/mysql_data/mysql/mysql.sock。
# vi /etc/my.cnf
建议:将原来的配置行注释掉(在行首加 #),然后添加新的配置项,以便日后排查问题。
第4步:修改初始化脚本
由于系统通常存在 /etc/init.d 到 /etc/rc.d/init.d 的符号链接映射,直接编辑前者即可影响后者。打开脚本并确保其中的 datadir 路径也已更新。
# vi /etc/init.d/mysqld
目的:确保系统服务启动脚本能正确识别新的数据路径。
第5步:修改安全辅助脚本
部分 MySQL 版本或服务启动时会调用 mysqld_safe,该脚本内也可能硬编码了旧的路径,需要同步修改。
# vi /usr/bin/mysqld_safe
动作:找到 datadir 相关设置,将其改为 /home/mysql_data/mysql。
第6步:建立软链接(兼容性处理)
为了使依赖旧路径的软件或组件能继续工作,可以在原位置建立一个指向新 socket 文件的软链接。
# ln -s /home/mysql_data/mysql/mysql.sock /var/lib/mysql/mysql.sock
重要:执行前请确保 /var/lib/mysql/ 目录存在,否则需先创建该目录。
第7步:启动 MySQL 服务
所有修改完成后,重新启动 MySQL 服务。
# service mysqld start
替代方案:也可以选择重启整个服务器(# reboot),让系统自动加载所有新配置。
简要总结
成功迁移后,可通过登录 MySQL 客户端测试基本功能是否正常。以上就是在 Linux 环境中更改 MySQL 数据库存储路径的详细内容,更多关于 Linux 服务器管理和数据库优化的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









