目录

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/