MySQL数据目录的修改(CentOS)


=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指定的文件中详细的报错信息,然后再检查目录、文件的权限是否正确」
  • 已有实例正在运行;
  • ……

参考链接:

=END=

, ,

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注