Ubuntu下迁移MySQL数据库存储位置至云硬盘完整教程

凌晨两点半
凌晨两点半
发布时间:2026-10-14| 3人浏览过
原创

出于数据安全与扩展性的考虑,将服务器上的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读取和写入新目录,否则即使其他配置正确,服务也无法启动。

  1. 编辑AppArmor配置文件:sudo vim /etc/apparmor.d/usr.sbin.mysqld
  2. 找到原有的规则块:
    /var/lib/mysql r,
    /var/lib/mysql/** rwk,
    
  3. 将其替换为新目录的路径规则:
    /media/hdb1/db r,
    /media/hdb1/db/** rwk,
    
  4. 保存并退出编辑器。

第5步:修改MySQL主配置文件

目的:告知MySQL服务端启动时从新路径加载数据。 入口:终端命令行

  1. 编辑MySQL配置文件:sudo vim /etc/mysql/my.cnf
  2. 搜索 datadir 字段。
  3. 将原来的值(通常为 /var/lib/mysql)修改为:datadir = /media/hdb1/db
  4. 保存文件。

第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优化及数据库管理的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。