Ubuntu下迁移MySQL数据库存储位置至云硬盘完整教程
出于数据安全与扩展性的考虑,将服务器上的MySQL数据库迁移至独立挂载的云硬盘是常见的运维需求。本文将介绍如何在Ubuntu环境下,通过修改系统配置和权限,安全地将MySQL数据目录迁移至指定路径,确保数据库服务在新位置正常运行。
迁移目标与准备
本次操作的目标是将MySQL默认的 /var/lib/mysql 目录迁移至新挂载的云硬盘路径,例如 /media/hdb1/db。在进行任何更改之前,务必对现有数据库进行完整备份,以免在操作失误导致数据丢失。
真实操作顺序
第1步:创建新的数据存储目录
目的:在目标磁盘上建立用于存放数据库文件的文件夹。 入口:终端命令行 动作:执行创建目录命令。
mkdir /media/hdb1/db
第2步:复制原有数据库文件
目的:将当前运行的MySQL数据完整复制到新目录,保留文件属性。
入口:终端命令行
参数:使用 -dpR 参数以确保保留符号链接和所有文件权限/时间戳。
cp -dpR /var/lib/mysql/* /media/hdb1/db
第3步:修正新目录的所有者与权限
目的:确保MySQL用户(mysql)拥有对新目录的读写执行权限,否则服务启动时会因权限不足而失败。
入口:终端命令行
chown mysql:mysql /media/hdb1/db
第4步:配置AppArmor访问控制
目的:Ubuntu默认启用AppArmor安全模块,它会限制MySQL进程只能访问特定的路径。必须手动授权MySQL读取和写入新目录,否则即使其他配置正确,服务也无法启动。
- 编辑AppArmor配置文件:
sudo vim /etc/apparmor.d/usr.sbin.mysqld - 找到原有的规则块:
/var/lib/mysql r, /var/lib/mysql/** rwk, - 将其替换为新目录的路径规则:
/media/hdb1/db r, /media/hdb1/db/** rwk, - 保存并退出编辑器。
第5步:修改MySQL主配置文件
目的:告知MySQL服务端启动时从新路径加载数据。 入口:终端命令行
- 编辑MySQL配置文件:
sudo vim /etc/mysql/my.cnf - 搜索
datadir字段。 - 将原来的值(通常为
/var/lib/mysql)修改为:datadir = /media/hdb1/db - 保存文件。
第6步:重启相关服务并验证
目的:使AppArmor策略生效并重新启动MySQL服务,应用新的配置。
sudo /etc/init.d/apparmor restart
sudo /etc/init.d/mysql restart
若服务无报错返回,且能通过客户端连接成功,说明迁移完成。
完成判断与简要总结
检查MySQL进程是否正常运行:sudo systemctl status mysql 或查看错误日志。如果能正常登录数据库,且在数据库中查询 SELECT @@datadir; 返回的路径为 /media/hdb1/db,则迁移成功。
以上就是Ubuntu下完美实现迁移MySQL数据库位置的详细内容,更多关于MySQL优化及数据库管理的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













