[英]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访问其他目录中的文件。 如果您检查系统日志文件,则会发现一条隐秘的错误消息,以达到此目的。
解决方案包括:
禁用AppArmor(不推荐)
编辑AppArmor规则(复杂)
使用“ 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.