繁体   English   中英

mysql amazon ec2“无法创建测试文件”错误

[英]mysql amazon ec2 “Can't create test file” error

我在EC2上运行,并且希望将MYSQL的datadir放在另一个EBS上。 我在/ data上安装了EBS(ext3),并更改了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

有任何想法吗?

如果您在Ubuntu之类的发行版上运行,则AppArmor可能会阻止mysqld访问其他目录中的文件。 如果您检查系统日志文件,则会发现一条隐秘的错误消息,以达到此目的。

解决方案包括:

  1. 禁用AppArmor(不推荐)

  2. 编辑AppArmor规则(复杂)

  3. 使用“ mount bind”使MySQL认为您的数据文件实际上位于EBS卷上,而它们位于原始位置。 将更改还原为datadir。

几年前,我写了一篇针对Amazon的文章,描述了您要尝试执行的社区最佳实践,包括安装绑定示例的命令:

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

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

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

如果您正在运行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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM