Mysql数据文件迁移(Centos)

Mysql数据文件迁移(Centos)

一、背景

已经上线一段时间的产品突然系统硬盘空间告警。经排查发现是由于最近访问量增加,而mysql数据库当时采用的是静默安装,相关数据文件存储在了/usr/local上,使用的是根目录的存储空间,因此考虑将相关数据文件迁移至其他剩余空间比较富裕的分区。

二、准备工作

2.1 检查操作系统版本
cat /etc/issue

在这里插入图片描述

2.2 检查数据库版本
mysql --version

在这里插入图片描述

三、操作步骤

3.1 查看当前数据文件存储路径
ps -ef | grep mysql

在这里插入图片描述

3.2 修改数据文件存储路径(由/usr/local修改为/home/mysqlData)
#停止数据库服务
service mysql stop
#创建迁移后的目录并修改数据和用户
mkdir /home/mysqlData
chown -R mysql:mysql /home/mysqlData
#数据迁移
cp -afir /usr/local/mysql /home/mysqlData
#修改mysql配置文件/etc/my.cnf,将文件中原始的数据文件存储路径/usr/local修改为/home/mysqlData
vi /etc/my.cnf
:%s#/usr/local#/home/mysqlData#g
#修改MySQL的启动脚本/etc/init.d/mysql,将文件中第47行的的datadir=改成datadir=/home/mysqlData/mysql
vi /etc/init.d/mysql
:47,47s#datadir=#datadir=/home/mysqlData/mysql#
#启动数据库服务
service mysql start
3.3 查看当前数据文件存储路径
ps -ef | grep mysql

在这里插入图片描述

3.4 至此,MySQL数据文件迁移成功
3.5 mysql-bin日志文件清除以及关闭mysql-bin相关日志的生成(视情况而定,需要的情况下执行以下相关操作)
#默认情况下mysql会一直保留mysql-bin文件,这样到一定时候,磁盘可能会被撑满
#首先要说明一下,这些文件都是mysql的日志文件,如果不做主从复制的话,基本上是没用的,虽然没用,但是不建议使用rm命令删除,这样有可能会不安全,正确的方法是通过mysql的命令去删除。
#登录mysql数据库
mysql -uroot -p
#执行如下sql
reset master;

Mysql数据文件迁移(Centos)_第1张图片
Mysql数据文件迁移(Centos)_第2张图片
Mysql数据文件迁移(Centos)_第3张图片

#另外如果你的mysql服务器不需要做主从复制的话,建议通过修改my.cnf文件,来设置不生成这些文件,只要删除my.cnf中的下面一行就可以了。
vi /etc/my.cnf
:%s/log-bin=mysql-bin/#log-bin=mysql-bin/g
#如果你需要复制,最好控制一下这些日志文件保留的天数,可以通过下面的配置设定日志文件保留的天数:
vi /etc/my.cnf
:%s/expire_logs_days = 10/expire_logs_days = 7/g
#重启数据库服务
service mysql restart
3.6 旧数据文件清理(视情况而定,需要的情况下执行以下相关操作)
#查看删除前的硬盘空间
df -h
cd /usr/local/mysql/var
ls -al
rm -f  mysql-bin.000*
#查看删除后的硬盘空间,可以看到相关硬盘空间已释放
df -h

Mysql数据文件迁移(Centos)_第4张图片
Mysql数据文件迁移(Centos)_第5张图片
Mysql数据文件迁移(Centos)_第6张图片

你可能感兴趣的:(MySQL,centos,MySQL,数据文件,迁移)