Jon*_*nik 2 mysql ubuntu amazon-ec2
我正在尝试将 MySQL 安装的数据文件移动到另一个地方,但它不起作用。
尝试启动 mysqld 时,我得到了这个/var/log/mysql/error.log:
110922 7:27:40 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
110922 7:27:40 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
110922 7:27:40 InnoDB: Initializing buffer pool, size = 512.0M
110922 7:27:40 InnoDB: Completed initialization of buffer pool
110922 7:27:40 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
Run Code Online (Sandbox Code Playgroud)
即使我尝试一些无辜的事情,也会发生上述情况:
sudo cp -a /var/lib/mysql /var/lib/mysql2
Run Code Online (Sandbox Code Playgroud)
...并将datadir设置更改/etc/mysql/my.cnf为/var/lib/mysql2
(如果我保持my.cnf原样,我会得到相同的结果,并创建一个名为 mysql2 的符号链接以指向 mysql。)
这有点令人费解。复制的数据目录中的文件权限完全相同。显然我在做这些更改之前停止/启动守护进程(sudo service mysql stop等等)知道我做错了什么吗?
这是 Amazon EC2 上的 Ubuntu 11.04(64 位 m1.large 实例)。
(实际上,我想将 MySQL 数据移动到另一个 EBS 卷,到诸如/mnt/data/mysqlor 之类的路径/data/mysql,但上述最小场景足以重现问题。)
您遇到了 AppArmor 规则,该规则禁止 MySQL 打开您放置它们的文件。如果您检查系统日志文件,您会发现一条与此相关的神秘错误消息。
解决方案包括:
禁用 AppArmor(不推荐)
编辑 AppArmor 规则(复杂)
使用 mount bind 使 MySQL 认为您的数据文件在原始位置,而它们实际上已在 EBS 卷上。将您的更改还原为datadir.
多年前,我为亚马逊写了一篇文章,描述了您正在尝试执行的社区最佳实践,包括 mount bind 示例:
使用 EBS 在 Amazon EC2 上运行 MySQL
http://ec2ebs-mysql.notlong.com
请注意,文章中的 AMI id 是旧的。使用现代 Ubuntu AMI,您需要将 mkfs.xfs 和 /etc/fstab(但不在 ec2 工具命令行中)中的 /dev/sdh 替换为 /dev/xvdh。
| 归档时间: |
|
| 查看次数: |
2289 次 |
| 最近记录: |