随着时间的推移,mysql的数据量越越大,使用yum默认安装的目录为系统盘 /var/lib/mysql,现重新挂载了一个硬盘,需要做数据目录的迁移到 /mnt/data/。以解决占用系统盘过高情况。
1.强烈建议这种操作。镜像一个一样的Centos系统,在测试系统中先验证后无问题再实际生产系统中操作。
2.数据备份,不要删除,以免操作错误,能请及时回滚。
以下是我生产的实际操作脚本
从 /var/lib/mysql迁移到 /mnt/data/
使用 yum 安装 mysql 目录结构
MYSQL目录 | 说明 |
/var/lib/mysql | mysql数据文件存放路径,可自定义 |
/etc/my.cnf | mysql配置文件路径 |
/usr/lib64/mysql | mysql库文件路径 |
/usr/sbin/mysql*或/usr/bin/mysql* | mysql二进制可执行文件路径 |
/etc/rc.d/init.d/mysqld | mysql服务管理脚本地址 |
/var/log/mysqld.log | mysql日志文件路径 |
镜像系统中操作。
ps -ef|grep mysql
#没有的话,执行启动命令
systemctl start mysqld
mysql -uroot -p
systemctl stop mysqld
ps -ef|grep mysql
mkdir -p /mnt/data/
chown -R mysql:mysql /mnt/data
cp -a /var/lib/mysql /mnt/data/
du -sh *
cd /etc
#备份配置文件
cp my.cnf my.cnf.bak20231026
vi my.cnf
systemctl start mysqld
ps -ef|grep mysql
mysql -uroot -p
show variables like '%datadir%';
df -hl
风险点:1.由于是测试linux服务器验证的时候是镜像的正式linux的服务器,环境肯定是一样的,就是担心由于可能正式linux有个别应用影响重启mysql
2.各应用需要检查是否正常.
#查看各硬盘使用情况
df -hl
#1.查询下进程并关闭mysql(OK)
ps -ef|grep mysql
mysql -uroot -p
systemctl stop mysqld
ps -ef|grep mysql
#2.创建目录并授权(已执行)
mkdir -p /mnt/data/
chown -R mysql:mysql /mnt/data
#3.复制mysql数据文件到新目录(OK)
cp -a /var/lib/mysql /mnt/data/
cd /mnt/data
du -sh *
#4.备份配置文件,修改为新目录(OK)
cd /etc
cp my.cnf my.cnf.bak20231101
vi my.cnf
#datadir=/mnt/data/mysql
#socket=/mnt/data/mysql/mysql.sock
#5.重启msyql,验证(OK)
systemctl start mysqld
ps -ef|grep mysql
mysql -uroot -p
show variables like '%datadir%';
#查看各硬盘使用情况
df -hl