Mysql 如何正确迁移数据库数据(常用三种方案)
mysql 相信对于开发者来说都不陌生,在工作中,一般很少会遇到 mysql 迁移的情况,但是如何真的需要进行 mysql 数据迁移,应该怎么做呢?
本文作者通过工作经验实操亲测几种有效的方式,供大家学习参考
注意:数据迁移存在一定风险,请提前备份 mysql 数据,以免操作失误导致数据丢失
一、使用 mysqldump 工具(最常用)
mysqldump 工具是官方自带的、最推荐的数据导出工具,我们可以通过 mysqldump 把需要迁移的表导出到本地 sql 文件,然后在新的数据库进行导入,即可实现数据迁移
具体操作如下:
(一)导出数据
导出数据库(含数据)
mysqldump -u 用户名 -p 数据库名 > db_backup.sql
解释:导出数据库下所有的表以及数据
导出数据库(不含数据)
mysqldump -u 用户名 -p --no-data 数据库名 > db_backup.sql
添加参数:–no-data
导出指定表
mysqldump -u 用户名 -p --no-data 数据库名 表名1 表名2 > db_backup.sql
导出指定数据库下的指定表,如果加上 –no-data ,那就是只是导出表结构,不包含表数据
(二)导入数据
前面的步骤我们通过 mysqldump 已经导出了数据,本地会有一个 db_backup.sql 数据文件
现在我们可以导入到新的数据库中
方式一:直接导入
mysql -u 用户名 -p 数据库名 < db_backup.sql
db_backup.sql 为 mysqldump 导出的 sql 文件路径
然后输入 mysql 密码即可,数据量大的情况可能会比较慢,全程可能会阻塞 mysql 的读写(生产环境谨慎操作)
方式二:使用 source
-
先登陆
mysql -u 用户名 -p
-
source sql 文件
-> use 数据库 -> source db_backup.sql
二、直接拷贝文件
这种方式简单粗暴, 适用新旧数据库版本相同的情况(新数据库版本偏高也是可以的),了解 mysql 数据库的应该都知道,mysql 的数据都是存储在 data 目录下的文件,所以我们只需要直接迁移 data 目录即可
-
停止数据库(非常关键)
-
找到数据库文件目录(一般是 /var/lib/mysql/data,从 mysql.conf 配置可找到)
-
或者使用sql语句:
SHOW VARIABLES LIKE 'datadir';
-
-
直接压缩目录
-
将压缩文件上传到新服务器新mysql的数据目录下,然后解压重启
注意⚠️:这种方式只适用相同版本的数据库之间的迁移,跨版本复制,mysql重启可能会报错,并且在复制数据目录时,mysql一定要停止,否则新mysql会重启报错
如有报错,可将在本博客搜索报错解决方法
⚠️⚠️⚠️:一定一定一定要先停止 mysql 数据库,否则迁移后新数据库极有可能是启动不成功的
三、使用第三方工具
推荐使用 DataGrip(IDEA全家桶)
使用教程:DataGrip工具使用教程
总结对比
mysql 数据库迁移的几种方式对比
方式 | 说明 | 优势 | 劣势 |
---|---|---|---|
mysqldump 工具 | 官方自带 mysqldump 工具先导出数据文件,然后重新导入 | 方便快捷,官方自带支持,兼容性强,可以不停机操作 | 数据量大的情况容易出现卡、死机、缓慢的情况, 无法迁移实时市局 |
拷贝数据文件 | 直接复制 mysql/data 数据目录 | 方便快捷、快速,相同版本的情况下无兼容性问题 | 新旧版本存在差异时可能启动不成功,需要停机操作 |
第三方工具 | 使用第三方比较成熟的工具,比如 DataGrip | 比较成熟,不需要停机迁移 | 可能存在卡、耗时久、影响表读写的情况 |
版权声明
未经授权,禁止转载本文章。
如需转载请保留原文链接并注明出处。即视为默认获得授权。
未保留原文链接未注明出处或删除链接将视为侵权,必追究法律责任!
本文原文链接: https://fiveyoboy.com/articles/mysql-export-import-data/
备用原文链接: https://blog.fiveyoboy.com/articles/mysql-export-import-data/