=Start=
缘由:
MySQL默认的数据目录所在磁盘空间不够大,在数据量大/增长较快的时候容易导致磁盘报警,所以需要修改MySQL的数据目录到另一个磁盘空间充足的目录下。
参考解答:
1.准备工作
$ ps aux | grep --color -i "mysql" root 18452 0.0 0.0 110364 1636 pts/3 S 17:25 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/`hostname`.pid mysql 18674 0.3 2.4 679308 193832 pts/3 Sl 17:25 0:27 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/`hostname`.err --pid-file=/var/lib/mysql/`hostname`.pid $ file /usr/bin/mysqld_safe $ vim /usr/bin/mysqld_safe ... DATADIR=/var/lib/mysql --datadir=$DATADIR --log-error=$DATADIR/`hostname`.err --pid-file=$DATADIR/`hostname`.pid ... $ file /etc/init.d/mysql $ vim /etc/init.d/mysql
2.实际操作
1.先停掉MySQL服务 # /etc/init.d/mysql status # /etc/init.d/mysql stop 2.切换MySQL数据目录 & 同时修改MySQL配置文件的对应部分 # cp -rap /var/lib/mysql /data/mysql # chown mysql.mysql /data/mysql # vim /etc/my.cnf Change From: datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock #根据实际情况决定是否添加,有的只是用的`port`而不是`socket` Change To: datadir = /data/mysql pid-file = /data/mysql/`hostname`.pid #记得将`hostname`替换成实际的 主机名 socket = /data/mysql/mysql.sock #根据实际情况决定是否添加,有的只是用的`port`而不是`socket` 3.启动MySQL服务 # /etc/init.d/mysql status # /etc/init.d/mysql start
3.可能会遇到的问题
问题一:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
解决办法:
方法一: 将如下内容添加至MySQL的配置文件中`/etc/my.cnf`: [client] socket = /data/mysql/mysql.sock 方法二: 在命令行中手动指定`IP:port`或`socket`: $ mysql -uroot -p -h127.0.0.1 -P3306 或 $ mysql -uroot -p --socket=/opt/mysql/mysql.sock
问题二:ERROR! The server quit without updating PID file (xxx.pid).
可能的原因:
- 权限问题;「先查看log-error指定的文件中详细的报错信息,然后再检查目录、文件的权限是否正确」
- 已有实例正在运行;
- ……
参考链接:
- http://tecadmin.net/change-default-mysql-data-directory-in-linux/
- http://crashmag.net/change-the-default-mysql-data-directory-with-selinux-enabled
- http://stackoverflow.com/questions/11657829/error-2002-hy000-cant-connect-to-local-mysql-server-through-socket-var-run
- http://pein0119.github.io/2015/03/25/MySQL%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%AF%E5%8A%A8%E9%94%99%E8%AF%AF-The-server-quit-without-updating-PID-file/
- http://blog.csdn.net/leshami/article/details/39759849
=END=