2

我在 EC2 上运行,并希望在另一个 EBS 上拥有 MYSQL 的数据目录。我将 EBS (ext3) 安装在 /data 上,并将 my.cnf 中的 datadir 更改为指向该目录。但是,当我尝试启动 mysql 时,出现此错误:

120518 03:53:17 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
120518 03:53:28 mysqld_safe Starting mysqld daemon with databases from /data/mysql/
120518  3:53:28 [Warning] Can't create test file /data/mysql/ip-10-136-23-225.lower-test
120518  3:53:28 [Warning] Can't create test file /data/mysql/ip-10-136-23-225.lower-test
/usr/libexec/mysqld: Can't change dir to '/data/mysql/' (Errcode: 13)
120518  3:53:28 [ERROR] Aborting

120518  3:53:28 [Note] /usr/libexec/mysqld: Shutdown complete

120518 03:53:28 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

有任何想法吗?

4

3 回答 3

5

如果您在 Ubuntu 之类的发行版上运行,那么 AppArmor 可能会阻止 mysqld 访问不同目录中的文件。如果你检查你的系统日志文件,你会发现一个神秘的错误信息。

解决方案包括:

  1. 禁用 AppArmor(不推荐)

  2. 编辑 AppArmor 规则(复杂)

  3. 使用“挂载绑定”让 MySQL 认为您的数据文件位于原始位置,而它们实际上位于 EBS 卷上。恢复对 datadir 的更改。

几年前,我为 Amazon 写了一篇文章,描述了您正在尝试做的事情的社区最佳实践,包括 mount bind 示例的命令:

使用 EBS 在 Amazon EC2 上运行 MySQL
http://ec2ebs-mysql.notlong.com

请注意,文章中的 AMI id 是旧的。使用现代 Ubuntu AMI,您需要在 mkfs.xfs 和 /etc/fstab 中将 /dev/sdh 替换为 /dev/xvdh(但不是在 ec2 工具命令行中)。

于 2012-05-19T00:21:07.817 回答
1

如果您运行的是 Ubuntu,由于 apparmor 服务,您可能会遇到此错误。为了解决这个问题。要绕过它,您需要执行以下操作:

1)编辑'/etc/apparmor.d/usr.sbin.mysqld'并添加以下行:

/opt/lib/mysql/ r,

/opt/lib/mysql/** rwk,

( assuming your new data directory is in /opt/lib/mysql )

2)重新启动apparmor服务:

sudo service apparmor restart
于 2013-11-27T00:17:16.717 回答
0

将 /data 目录的所有者更改为 mysqld 进程所有者(chown owner /data)。或 (chmod 777 -R /data) 非常不安全。

于 2012-05-18T09:07:03.240 回答