CentOS迁移MySQL数据库目录

在阿里云上买了个云服务器,自己搭建了MySql,因为额外买了数据盘,想把MySQL的数据移到数据盘。参考了CentOS Linux更改MySQL数据库目录位置 进行迁移,这里记录步骤和遇到的问题。

  1. 关闭服务 service mysqld stop
  2. 将mysql的数据复制到新路径(mysql现有数据位置可以通过 show global variables like "%datadir%"; 来查看): cp -a oldPath newPath。 这里需要注意,复制的时候要把文件夹权限一并复制
  3. 备份然后修改配置文件 /etc/my.cnf,这里我修改了如下几个路径: datadir, socket, log-errorpid-file。建议把原来的设置注释,然后添加。
  4. 修改 /etc/init.d/mysqld,但是我没有找到该文件。因此这一步没有执行——从结果看,不影响。
  5. 备份然后修改文件 /usr/bin/mysqld_safe,修改路径:DATADIR。此处应和第三步中datadir的值一致。
  6. 建立sock的链接: ln -s /newPath/mysql/mysql.sock /oldPath/mysql/mysql.sock
  7. 启动服务:service mysqld start

如果按照上述步骤一次性成功,那很好。如果有问题,不要急。我们慢慢来分析。首先列举我遇到的问题:文件夹权限问题。因为在第3步的时候,修改了 log 和 pid 的路径,因此需要修改这两个文件所在文件夹的属性,以便mysql可以写入,如: sudo chown mysql.mysql /newPath/to/pidfile。注意,每一个父级目录都要修改属性。
此外,遇到问题的时候,最有利的武器就是查看日志,查看 mysqld.log 文件内容,可以发现有针对性的错误。