转载 更改mysql 数据存储路径

再次提醒:这篇文章只在MySQL5.6.28 
Red Hat Enterprise Linux Server release 6.7 (Santiago)测试通过

网上修改存储路径的文章各种各样,之前服务器搬迁的时候,因为原本的空间不足,修改的时候也是照着网上的来,期间各种错误,最后也是莫名其妙的成功了(三台服务器只成功了两台)!这次测试服务器重做系统再次操作的时候,仔细看了MySQL的err日志,发现竟然如此简单!请看小弟一一道来!

背景:数据库全部默认装完以后,数据库存储路径是在/var/lib/mysql下,我需要将其更改到/data/下,我在/data/挂载了一块300G的硬盘。

首先,将/var/lib/mysql复制到/data/下,命令如下:

cp -rp /var/lib/mysql /data/
  • 1
  • 2

注意,这里的-p参数是重点!!!

-p:源目录或者文件的属性保留
  • 1

网上基本上大部分的文章都没有提到这点,所有会有一部分文章说后续还要更改权限啊,用户啊之类的,其实你需要在复制的时候加上这个参数就可以全部解决!

然后,因为我的配置文件在安装的时候默认是/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
  • 1
  • 2
  • 3

但是我更习惯在/etc/my.cnf。所以复制一份到/etc/下,然后在配置文件中增加以下两行即可!

    [mysqld]
    #以下两行是在[mysqld]标签下的
    socket = /data/mysql/mysql.sock
    datadir = /data/mysql
  • 1
  • 2
  • 3
  • 4

然后就可以正常启动了,是不是特!别!简!单!还需要注意以下几点:

  1. 所有操作都得先关闭数据库!
  2. 将/usr/my.cnf复制一份到/etc/my.cnf后,/usr/my.cnf下的配置自动就失效了。这个不知道是不是所有版本的都这样,没仔细研究过。
  3. MySQL报错习惯看错误日志,比控制台输出的错误信息要详细的多。比方说如果是普通的复制,修改完配置文件控制台报的是”pid”文件错误还是”mysql.sock”错误来着。但是你在err日志中查看,会看到‘./mysql/XXX.frm’ 之类的错误。但是这个文件确实存在,仔细看就会发现,所属用户从mysql变成了root,导致mysql启动的时候权限不足!

2017/08/09补充 
之前弄完以后,是通过navicat连接的,连接成功。但是今天通过命令行直接连接的时候,报错

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  • 1

很奇怪,为什么mysql使用的还是原先的sock的位置。推测应该是mysql的服务端也就是mysqld的配置已经更新成功,但是mysql客户端的还没更新,后查找资料,在my.cnf下增加如下配置即可!

[mysql]
socket=/data/mysql/mysql.sock
  • 1
  • 2

2017/08/31补充 
在使用mysqldump命令的时候,又出现了找不到sock的错误,需要增加以下配置

[mysqldump]
socket=/data/mysql/mysql.sock
posted @ 2018-03-28 13:40  Gordon管  阅读(728)  评论(0编辑  收藏  举报