我正在尝试让 MySQL 指向我在 EC2 机器上安装的 EBS 卷上的目录。
我采取了以下步骤:
- 已停止 MySQL (
/etc/init.d/mysqld stop
) – 成功 - 在我的卷上创建了一个 MySQL 目录,并挂载在 /vol 上(
mkdir /vol/mysql
) - 将 /var/lib/mysql 的内容复制到 /vol/mysql (
cp -R /var/lib/mysql /vol/mysql
) - 将该目录的所有者和组更改为与原始目录匹配(
chown -R mysql:mysql /vol/mysql
) - 完成此步骤后,这两个目录相同。 编辑 /etc/my.cnf 文件 (注释掉原来的2行):
[mysqld] \#datadir=/var/lib/mysql \#socket=/var/lib/mysql/mysql.sock datadir=/vol/mysql socket=/vol/mysql/mysql.sock
已启动 MySQL (
/etc/init.d/mysqld start
) -失败的
错误文件 /var/log/mysqld.log 包含以下行:
100205 20:52:54 mysqld started
100205 20:52:54 InnoDB: Started; log sequence number 0 43665
100205 20:52:54 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.0.45' socket: '/vol/mysql/mysql.sock' port: 3306 Source distribution
没有其他可用错误。
- 我究竟做错了什么?
- 在哪里可以找到 MySql 遇到的错误?
- 如果我恢复原始行,MySQL 将启动,这让我相信这可能是权限问题 - 但两个目录的权限是否相同?
谢谢!
答案1
我采纳了 Garth 的建议,用 运行了脚本sh -x
。我发现访问mysql.sock
文件时存在权限问题。所以我将旧脚本留在了 conf 文件中,再次运行它,然后它就正常工作并从新位置运行了!
感谢 Gareth 为我指路。我给你的评论打了 +1,但你没有回复。
希望这个问题能够帮助其他尝试做同样事情的人。
答案2
尝试使用 bind 挂载原始路径。
Mount 随后显示:
/vol/etc/mysql on /etc/mysql type none (rw,bind)
/vol/lib/mysql on /var/lib/mysql type none (rw,bind)
/vol/log/mysql on /var/log/mysql type none (rw,bind)
配置文件仍然和以前一样:
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql