本文主要是介绍MySQL数据目录迁移的完整过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《MySQL数据目录迁移的完整过程》文章详细介绍了将MySQL数据目录迁移到新硬盘的整个过程,包括新硬盘挂载、创建新的数据目录、迁移数据(推荐使用两遍rsync方案)、修改MySQL配置文件和重启验证...
因为 MySQL 数据量越来越大,导致原磁盘空间被撑满,只能将数据目录迁移到新的硬盘。这里记录一下整个过程。
1,新硬盘挂载(如果有的话)
如果你本身已有大盘,只是想把 MySQL 的 data 目录换到新的路径,那这一步可以跳过。
我这里是新增了一块硬盘,因此需要先做好分区 + 格式化 + 挂载工作,并最终让新硬盘挂载到:

2,创建新的 MySQL 数据目录
sudo mkdir -p /data/mysql sudo chown -R mysql:www.chinasem.cnmysql /data/mysql
要确保目录权限属于 mysql 用户,否则服务无法启动。
3,迁移 MySQL 数据(推荐两遍 rsync 方案,停机时间最小)
理论上 完全不停机、保证数据完整 是非常困难的。我的方案都是需要短暂停机的,如果无法接受,只能想别的办法了。
3.1 不停机预同步
这一步不会影响线上 MySQL,可提前把大量数据同步过去,减少停机压力:
sudo rsyChina编程nc -av --progress /opt/mysql-8.0.43/data/ /data/mysql/
大家改好自己相应的路径就可以了。
- /opt/mysql-8.0.43/data/ 旧的MySQL的data目录,
- /data/mysql/ 是新的。
注意两个路径末尾的 / ,避免目录套目录问题。
3.2 停机
sudo systemctl stop mysql ps -ef | grep mysql
确认所有 MySQL 进程已退出。
3.3 停机后增量同步
rsync 默认行为就是跳过目标中已存在且未变化的文件。保证数据一致性:
sudo rsync -av --delete --progress /opt/mysql-8.0.43/data/ /dataandroid/mysql/
具体说明: rsync -av /source/ /dest/
-a:归档模式,会保留权限、时间戳、软硬链接等-v:显示详细信息- 判断是否需要复制:rsync 会对比 文件大小 和 修改时间,如果目标文件和源文件一样,就不会再复制。
- 所以你第一次“干跑”后,第二次停机增量同步,只会复制那段时间内新增或修改的文件,速度非常快。
如果想更严格确保文件内容完全一致,可以加 -c(checksum)参数,但会慢很多,因为会计算每个文件的校验和。
3.4 如果停机不影响业务
上面都执行了这步就不用执行了:
比如是测试库、开发库,那就可以一步到位:
sudo systemctl stop mysql sudo rsync -av --progress /opt/mysql-8.0.43/data/ /data/mysql/
4,修改 MySQL 配置文件 my.cnf
找到:
datadir = /opt/mysql-8.0.43/data
把它改成:
datadir = /data/mysql
同理,如果你想调整 MySQL 临时文件目录(可选),也可以:
tmpdir =android /data/mysql_tmp
5,重启并验证
sudo systemctl start mysql systemctl status mysql
验证是否生效:
mysql -e "show variables like 'datadir';" mysql -e "show variables like 'tmpdir';"
输出正确路径即可。
至此,MySQL 已经使用新的数据磁盘运行。
如果运行稳定一段时间(建议至少一天),就可以考虑删除旧的数据目录,释放原磁盘空间。
到此这篇关于MySQL数据目录迁移的完整过程的文章就介绍到这了,更多相关MySQL数据目录迁移内容请搜索China编程(www.chinasem.cn)以前的文章或继China编程续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!
这篇关于MySQL数据目录迁移的完整过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!