mysql数据目录迁移及注意点

场景

由于当前mysql所在目录盘存储不够,需要将数据目录迁移到其他大存储路径下,此数据服务为其他库的从库(备份库),不负责读写功能。

方案设计

因为该库只是备份库,不承担业务读写服务,所以方案如下仅供参考
1:停掉该数据库的服务 systemctl stop mysqld@3306
2-1: 本机数据目录迁移只需要使用mv命令将数据文件目录挪到其他可用目录下 mv mysqldata3306 /data/ (将当前路径下的mysqldata3306数据目录及目录下的文件挪到data目录下,该命令挪文件会将目录所属权限一并挪走)
2-2:远程数据目录迁移需要保证远端机器已经安装mysql数据库,最好保证两边安装版本一致,使用scp -r /home/administrator/mysqldata3306 root@192.168.1.100:/data/ (将mysqldata3306数据目录及目录下的文件挪到远端机器data目录下)
数据拷完之后记得在远端修改文件目录所属权限 chown -R mysql:mysql mysqldata3306
3:数据文件拷贝完成需要修改my.cnf配置文件 ,将之前的配置文件数据目录替换成现在数据文件所在的文件目录即可,远程拷贝同理。
4:如果该库是单库没有主从节点则到这一步即可以启动数据库服务,但是当前的场景是该数据库为一个从库(备份库),启动后会恢复之前的主从通信,sql线程会去读中继日志relaylog,而在移动数据文件之前mysql-relay-bin.index会记录在挪文件之前的
日志存储路径,所以需要将这个mysql-relay-bin.index文件里边的数据路径一并替换成当前的数据文件所在路径,重启服务即可(systemctl start mysqld@3306),否则主从报错。

问题延伸

如果上述节点存在开启binlog日志写入,则在启动mysql服务前还需要修改mysql-bin.index文件里边的路径为当前文件目录路径,否则启动服务异常,报错mysqld@3306.service: control process exited, code=exited status=1

重点回顾

1:必须注意移动mysql数据文件之后的数据文件目录权限 chown -R mysql:mysql mysqldata3306
2: 必须修改mysql.cnf配置文件的路径配置,改成当前数据文件所在目录
3:有开启binlog日志写入参数必须修改mysql-bin.index文件里边的路径为当前文件目录路径
4:有主从服务必须修改mysql-relay-bin.index文件里边的数据路径为当前文件目录路径

原文地址:https://www.cnblogs.com/whiteY/p/14103073.html