服务器上mysql数据文件迁移

在Linux服务器上安装了mysql之后,很多人并不会关心mysql位置是不是安装合理,特别是数据文件存储的位置,随着业务数据的不断增加,mysql数据文件可以高达几十个G,默认的数据文件位置如果分配的磁盘空间不够,这时候就需要牵库。本文解决该问题的思路就是将mysql数据文件的目录修改到磁盘空间分配充足的地方,并将旧数据文件复制过去。

第一步:查询Linux磁盘分区

磁盘划分.png

第二步:查看mysql数据文件位置

默认数据文件路径.png

通过前两步可以看出mysql默认的数据文件位置并没有在空间较大的/home目录下,而是在根目录下,这种情况下根目录空间被沾满的可能性极高,所以迁移数据文件是经常做的操作。

第三步:停掉mysql服务,并在home目录下创建一个mysql_data目录用来迁移数据文件,命令如下

#service mysqld stop
#mkdir /home/mysql_data

第四步:将默认目录下的数据文件拷贝到/home/mysql_data,命令如下

#cp -a /var/lib/mysql/  /home/mysql_data
(参数a务必加上,避免拷贝过去权限改变)

第五步:修改第一个配置文件my.cnf(一般在etc目录下,如果不在使用命令find / -name my.cnf搜索),将datadir和socket路径都改为最新的home下对应的路径

第一个文件修改.png

第六步:修改第二个配置文件mysqld(一把默认在/etc/init.d/目录下,如果不在使用命令find / -name mysqld搜索),将datadir的路径修改为对应home目录下的路径

第二个文件修改.png

第七步:修改第三个配置文件mysql_safe(一般默认在/usr/bin目录下,找不到还是上述方法搜索),将datadir的路径修改为对应home目录下的路径

第三个文件修改.png

第八步:创建一个mysql.sock的链接(因为mysql启动时候会用到这个文件,目的是把原来的文件指向最新的位置,让mysql取最新位置上的文件)

#ln -s /home/mysql_data/mysql/mysql.sock  /var/lib/mysql/mysql.sock
链接效果.png

第九步:启动mysql,创建一个新库,看是否被创建在最新位置上

#service mysqld start
最终效果1.png
最终效果2.png

注意:有些情况下修改配置之后不能立即生效,启动mysql报和mysql_safe相关的错,这时候需要先取消mysql安全验证,启动mysql然后进入到mysql命令行中,刷新配置,具体命令如下:

#/usr/bin/mysqld_safe --skip-grant-tables &
#mysql -u root -p
mysql>flush privileges;

推荐阅读更多精彩内容