在Amazon EC2机器上移动MySQL目录

我试图让MySQL指向在我的EC2机器上挂载的EBS卷上的一个目录。
我采取了以下步骤:

  1. 停止MySQL( /etc/init.d/mysqld stop ) – 成功
  2. 在我的卷上创build一个MySQL目录,挂载在/ vol( mkdir /vol/mysql
  3. 将/ var / lib / mysql的内容复制到/ vol / mysql( cp -R /var/lib/mysql /vol/mysql
  4. 绑定该目录的所有者和组以匹配原来的( chown -R mysql:mysql /vol/mysql ) – 在这一步之后,这两个目录是相同的。
  5. 编辑/etc/my.cnf文件(注释2原始行):

     [mysqld] \#datadir=/var/lib/mysql \#socket=/var/lib/mysql/mysql.sock datadir=/vol/mysql socket=/vol/mysql/mysql.sock 
  6. 启动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 

没有其他错误可用。

  1. 我究竟做错了什么?
  2. 我在哪里可以findMySql遇到的错误?
  3. 如果我恢复原来的行,MySQL启动,导致我相信这可能是一个权限问题 – 但权限是相同的两个目录?

谢谢!

我采取了加思的build议,并用sh -x运行脚本。 我发现访问mysql.sock文件时存在权限问题。 所以我把旧文件放在conf文件中,再次运行,ta-da工作,并从新的位置运行!

感谢Gareth向我展示道路。 我给了你一个评论的+1,但你没有发表一个答案。

希望这个问题能够帮助其他一些试图这样做的人。

尝试使用绑定装载原始path。

然后显示:

 /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) 

和configuration文件仍然像以前一样:

 socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql