难题:在更改 MySQL 存储数据的位置(到不同的硬盘驱动器)并更新 apparmor 权限后,启动 MySQL 服务似乎使其处于这种奇怪的“激活”状态,并且日志不会给我任何有关其失败原因的信息。
关于如何重新启动 MySQL,您有什么想法吗?(“systemctl status mysql.service”和“journalctl -xe”的 Pastebin
采取的措施
- 停止服务
sudo service mysql stop
- 重新定位 MySQL 文件:
sudo rsync -av /var/lib/mysql /mnt/HDDB/database/mysql
- 将数据目录的位置更改
/etc/mysql/mysql.conf.d/mysqld.cnf
为:
datadir=/mnt/HDDB/database/mysql
- 在以下位置添加 AppArmor 别名
/etc/apparmor.d/tunables/alias
alias /var/lib/mysql/ -> /mnt/HDDB/database/mysql/,
- 添加了几行
/etc/apparmor.d/local/usr.sbin.mysqld
/mnt/HDDB/database/mysql/ r,
/mnt/HDDB/database/mysql/** rwk,
并/etc/apparmor.d/usr.sbin.mysqld
/proc/** r,
/sys/devices/system/node/ r,
/sys/devices/system/node/** r,
...以防止出现任何可能的 AppArmor 拒绝错误。在阅读了大量有类似问题的 StackExhange 帖子后,我确信它应该可以正常工作,但我不知道是什么导致了挂断。
当数据目录设置为其默认位置时,MySQL 确实可以按预期工作,但这不是我想要存储数据的地方(默认驱动器是 SSD),因此,任何帮助解决它的问题都将非常感谢。
答案1
不要改变任何东西
/etc/apparmor.d/tunables/alias
,只是改变
/etc/apparmor.d/usr.sbin.mysqld
我改变了这个:
# Allow data dir access
# /var/lib/mysql/ r,
# /var/lib/mysql/** rwk,
/mnt/largedisk/mysql/ r,
/mnt/largedisk/mysql/** rwk,
作品。