在阿里云上买了个云服务器,自己搭建了MySql,因为额外买了数据盘,想把MySQL的数据移到数据盘。参考了CentOS Linux更改MySQL数据库目录位置 进行迁移,这里记录步骤和遇到的问题。
- 关闭服务
service mysqld stop
- 将mysql的数据复制到新路径(mysql现有数据位置可以通过
show global variables like "%datadir%";
来查看):cp -a oldPath newPath
。 这里需要注意,复制的时候要把文件夹权限一并复制 - 备份然后修改配置文件
/etc/my.cnf
,这里我修改了如下几个路径:datadir
,socket
,log-error
和pid-file
。建议把原来的设置注释,然后添加。 - 修改
/etc/init.d/mysqld
,但是我没有找到该文件。因此这一步没有执行——从结果看,不影响。 - 备份然后修改文件
/usr/bin/mysqld_safe
,修改路径:DATADIR
。此处应和第三步中datadir
的值一致。 - 建立sock的链接:
ln -s /newPath/mysql/mysql.sock /oldPath/mysql/mysql.sock
- 启动服务:
service mysqld start
如果按照上述步骤一次性成功,那很好。如果有问题,不要急。我们慢慢来分析。首先列举我遇到的问题:文件夹权限问题。因为在第3步的时候,修改了 log 和 pid 的路径,因此需要修改这两个文件所在文件夹的属性,以便mysql可以写入,如: sudo chown mysql.mysql /newPath/to/pidfile
。注意,每一个父级目录都要修改属性。
此外,遇到问题的时候,最有利的武器就是查看日志,查看 mysqld.log
文件内容,可以发现有针对性的错误。
Comments