再次提醒:这篇文章只在MySQL5.6.28测试通过
网上修改存储路径的文章各种各样,之前服务器搬迁的时候,因为原本的空间不足,修改的时候也是照着网上的来,期间各种错误,最后也是莫名其妙的成功了(三台服务器只成功了两台)!这次测试服务器重做系统再次操作的时候,仔细看了MySQL的err日志,发现竟然如此简单!请看小弟一一道来!
背景:数据库全部默认装完以后,数据库存储路径是在/var/lib/mysql下,我需要将其更改到/data/下,我在/data/挂载了一块300G的硬盘。
首先,将/var/lib/mysql复制到/data/下,命令如下:
cp -rp /var/lib/mysql /data/
注意,这里的-p参数是重点!!!
-p:源目录或者文件的属性保留
网上基本上大部分的文章都没有提到这点,所有会有一部分文章说后续还要更改权限啊,用户啊之类的,其实你需要在复制的时候加上这个参数就可以全部解决!
然后,因为我的配置文件在安装的时候默认是/usr/my.cnf,下面是安装完的提示:
New default config file was created as /usr/my.cnf and
will be used by default by the server when you start it.
You may edit this file to change server settings
但是我更习惯在/etc/my.cnf。所以复制一份到/etc/下,然后在配置文件中增加以下两行即可!
socket = /data/mysql/mysql.sock
datadir = /data/mysql
然后就可以正常启动了,是不是特!别!简!单!还需要注意以下几点:
- 所有操作都得先关闭数据库!
- 将/usr/my.cnf复制一份到/etc/my.cnf后,/usr/my.cnf下的配置自动就失效了。这个不知道是不是所有版本的都这样,没仔细研究过。
- MySQL报错习惯看错误日志,比控制台输出的错误信息要详细的多。比方说如果是普通的复制,修改完配置文件控制台报的是”pid”文件错误还是”mysql.sock”错误来着。但是你在err日志中查看,会看到‘./mysql/XXX.frm’ 之类的错误。但是这个文件确实存在,仔细看就会发现,所属用户从mysql变成了root,导致mysql启动的时候权限不足!