背景
系统迭代开发,需要将线上数据迁移到测试环境,数据量不是很大,所以选择使用 mysqldump 工具数据迁移。
迁移操作
mysqldump 是 MySQL 自带的系统工具,可以使用 命令行
模式也可以选择使用可视化工具。
1. 使用命令行
如果可以 ssh 连接上数据库所在的机器,可以是使用命令行进行操作:
从源数据库导出数据到 test.sql
mysqldump db_name > backup-file.sql
从 test.sql 导入数据到测试环境的数据库
mysql db_name < backup-file.sql
2. DataGrip with mysqldump
我使用的是 DataGrip 的 mysqldump 工具进行数据迁移的,这里也分享下具体的做法
- 选中源数据库的
schema
右击唤出菜单选择Export Data to Files
- 弹出下面的对话框,可以选择,是否包含数据或者是只导出数据结构。
Path to mysqldump
选择你的mysqldump在本地磁盘的位置Statements
选择模式Databases
需要导出的数据库(不可选择,默认当前右键选中的)Tables
需要导出的表(不可选择,默认当前右键选中的)- 多选框,根据自己需求进行选择,一般默认即可
Out path
导出路径
- 运行之后出现了下面的问题
Unknown table 'COLUMN_STATISTICS' in information_schema (1109)
查阅文档得知:
MSYQL 官方文档
这是由于在mysqldump 8中默认启用了一个新标志。可以通过添加——column-statistics=0 来禁用它。该命令如下:
--column-statistics=0
修改之后我的导出命令为:
也可以通过设置 mysql 的配置文件 /etc/my.cnf
得到根本性的解决
[mysqldump]
column-statistics=0