首页 > 技术文章 > linux下迁移mysql数据库目录

sky-cheng 2020-01-15 10:38 原文

今天收到告警zabbix服务器硬盘满

 

 查看硬盘,发现mysql数据文件目录是在var/lib/mysql下,查看硬盘

[root@zabbix_server ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       50G   45G  2.3G  96% /
tmpfs                 7.8G  888K  7.8G   1% /dev/shm
/dev/sda1             477M   40M  412M   9% /boot
/dev/mapper/VolGroup-lv_home
                      492G   46G  422G  10% /home

发现/目录只有2.3G可用空间了,而/home目录下有422G可用空间,于是打算把mysql数据库目录迁移到home下

一、在home下建立mysql_data目录

[root@zabbix_server home]# mkdir mysql_data

二、停止mysql服务

[root@zabbix_server lib]# service mysqld stop
停止 mysqld: [确定]

三、切换到/var/lib/mysql目录下,复制数据文件

[root@zabbix_server lib]# cp -a mysql /home/mysql_data/

四、修改/etc/my.cnf文件里相应的目录

#datadir=/var/lib/mysql
datadir=/home/mysql_data/mysql
#socket=/var/lib/mysql/mysql.sock
socket=/home/mysql_data/mysql/mysql.sock

五、修改/etc/init.d/mysqd配置文件里相应的目录

[root@zabbix_server home]# vim /etc/init.d/mysqld 
#get_mysql_option datadir "/var/lib/mysql" mysqld
 get_mysql_option datadir "/home/mysql_data/mysql" mysqld

六、为/home/mysql_data/mysql/mysql.sock建立/var/lib/mysql/mysql.sock软连接

[root@zabbix_server home]# ln -s /home/mysql_data/mysql/mysql.sock /var/lib/mysql/mysql.sock

七、启动mysql服务

[root@zabbix_server home]# service mysqld start
正在启动 mysqld: [确定]

八、查看mysql进程

[root@zabbix_server home]# ps -ef|grep msyqld
root     17186 11579  0 10:17 pts/3    00:00:00 grep msyqld
[root@zabbix_server home]# ps -ef|grep mysqld
root     16740     1  0 10:15 pts/3    00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/home/mysql_data/mysql --socket=/home/mysql_data/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql    16934 16740 23 10:15 pts/3    00:00:26 /usr/sbin/mysqld --basedir=/usr --datadir=/home/mysql_data/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/home/mysql_data/mysql/mysql.sock
root     17189 11579  0 10:17 pts/3    00:00:00 grep mysqld

发现--datadir已经设置成了/home/mysql_data/mysql

推荐阅读