MariaDB 数据目录和日志目录迁移教程

目标
原路径:

迁移到:

并保留软链接:

1. 停止 MariaDB

确认已停止:

2. 迁移数据目录

创建目标目录:

复制原数据目录,保留权限和属主:

设置权限:

备份原目录并创建软链接:

检查:

3. 迁移日志目录

创建目标目录:

复制原日志目录:

设置权限:

备份原目录并创建软链接:

检查:

4. 处理 systemd 的 ProtectHome 限制

MySQL 服务默认可能有:

这会导致 MySQL 无法访问 /home/var/lib/mysql 或 /home/var/log/mysql。

查看当前限制:

创建 override:

重新加载 systemd:

确认配置生效:

看到同时有 ProtectHome=true 和 ProtectHome=false 没关系,后面的 drop-in 会覆盖前面的配置。

5. 启动 MariaDB


查看日志:

6. 验证目录是否正常写入

测试数据目录:

测试日志目录:

查看真实路径:

查看 MariaDB 状态:

7. 常见报错处理

报错:Can’t create test file /var/lib/mysql/xxx.lower-test
通常是以下原因之一:

重点看是否有:

如果有,按第 4 步添加 override。

报错:Permission denied
检查属主和权限:

AppArmor 相关

如果没有配置 AppArmor 也能正常使用,可以不处理。

如果后续遇到 AppArmor 拒绝访问,再加规则:

/etc/apparmor.d/usr.sbin.mysqld = 系统主配置,不建议直接改
/etc/apparmor.d/local/usr.sbin.mysqld = 本机自定义配置,推荐写这里

8. 确认稳定后清理旧目录

确认 MariaDB 已正常运行、业务访问正常后,再处理旧目录:

建议先保留一段时间,不要马上删除。确认无误后再清理:

删除前务必确认: