我在EC2上运行,并希望在另一个EBS上拥有MYSQL的datadir。我在/ 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
有什么想法吗?
答案 0 :(得分:4)
如果你在像Ubuntu这样的发行版上运行,那么AppArmor可能会阻止mysqld访问不同目录中的文件。如果您检查系统日志文件,则会发现此类错误消息。
解决方案包括:
禁用AppArmor(不推荐)
编辑AppArmor规则(复杂)
使用“mount bind”使MySQL认为您的数据文件在EBS卷上实际结束时位于原始位置。将更改还原为datadir。
我为亚马逊多年前写了一篇文章,描述了社区最佳实践,正是您要做的事情,包括mount绑定示例的命令:
使用EBS在Amazon EC2上运行MySQL http://ec2ebs-mysql.notlong.com
请注意,文章中的AMI ID是旧的。使用现代的Ubuntu AMI,您需要在/ mkfs.xfs和/ etc / fstab中将/ dev / sdh替换为/ dev / xvdh(但不能在ec2工具命令行中替换)。
答案 1 :(得分:0)
将/ data目录的所有者更改为mysqld进程所有者(chown所有者/数据)。或(chmod 777 -R / data)非常不安全。
答案 2 :(得分:0)
如果您正在运行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