在 Amazon EC2 机器上移动 MySQL 目录

在 Amazon EC2 机器上移动 MySQL 目录

我正在尝试让 MySQL 指向我在 EC2 机器上安装的 EBS 卷上的目录。
我采取了以下步骤:

  1. 已停止 MySQL ( /etc/init.d/mysqld stop) – 成功
  2. 在我的卷上创建了一个 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. 在哪里可以找到 MySql 遇到的错误?
  3. 如果我恢复原始行,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

相关内容