MySQL 守护进程启动失败

MySQL 守护进程启动失败

设置

我在 Amazon EC2 实例上运行 Linux CentOS。

MySQL 数据文件位于安装在 /data/ 的 EBS 驱动器上(符号链接 - /var/lib/mysql >> /data/mysql )。

在这个设置下,一切都运行正常。

问题

我正在尝试将所有内容从此 EBS 驱动器移动到新驱动器。我卸载了 /data/ 驱动器,并将其安装在 /data2/ 上。然后,我将新驱动器安装在 /data/ 上,并将所有内容从 /data2/ 复制到该驱动器上。系统上的所有功能均运行良好,但 MySQL 除外。每次我尝试启动 MySQL 守护程序 ( /etc/init.d/mysqld start ) 时,都会出现错误MySQL Daemon failed to start

答案1

问题出在用户权限上。

我执行了sudo chown -R mysql:mysql /data/mysql并解决了问题。我在其中包含递归 -R 非常重要,因为当我执行 时,看起来所有文件都具有正确的用户“mysql” ls -l。然而,它们显然没有。

当我运行时,MySQL 守护进程现在可以正常启动sudo /etc/init.d/mysqld start

答案2

我最近像你一样将我的 MySQL DB 从一个驱动器移到另一个驱动器,也遇到了同样的问题。如果你参考系统日志,这些问题就会变得更加清晰,正如@Michel 所说:

  1. 彻底停止 MySQL
  2. 仅将 DB 目录移动到新目录,而不是将 DB 目录中的每个文件都移动到新目录
  3. 编辑 /ec/my.cnf 文件以指向新目录
  4. 重启 MySQL

我做了所有这些,它仍然无法启动,最后我发现这是因为 AppArmor 阻止了它。如果你在机器上运行 AppArmor,你必须编辑

/etc/apparmor.d/usr.sbin.mysqld

文件并添加

/path/to/new/dir/ r,
/path/to/new/dir/** rwk,

然后重新启动 AppArmor

service apparmor restart

现在重新启动 MySQL

请注意,这些是 Debian 路径,我提到的配置文件可能不位于您的 CentOS 机器上的完全相同的位置。

相关内容