将生产库的数据连同表结构一起复制到测试库中

发布于:2025-07-24 ⋅ 阅读:(13) ⋅ 点赞:(0)

✅ 方法一:使用 mysqldump 工具(推荐)

这种方式可以完整复制数据库结构和数据,非常可靠。

1. 从生产库导出数据和表结构

在终端执行:

mysqldump -h 生产库地址 -u 用户名 -p 数据库名 > prod_backup.sql

例子:

mysqldump -h 192.168.10.100 -u root -p my_database > prod_backup.sql

它会导出整个数据库的建表语句和数据。

2. 将 SQL 文件导入测试库

你可以登录测试库所在的服务器,然后执行:

mysql -h 测试库地址 -u 用户名 -p 测试库名 < prod_backup.sql

例子:

mysql -h 127.0.0.1 -u root -p test_database < prod_backup.sql

如果 test_database 不存在,你可以先建一个:

CREATE DATABASE test_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

✅ 方法二:Navicat 或 DBeaver 工具导入导出

如果你使用的是图形化工具如 Navicat、DBeaver,可以这样操作:

1.在生产库上右键 -> 导出 SQL 文件(包含结构和数据)
2.在测试库中新建数据库(如果没有)
3.执行导入 SQL 文件

✅ 方法三:Django 项目中操作(不推荐批量数据复制)

如果你用的是 Django 项目,想用脚本做也可以,但不适合用于大量数据和结构同步,一般只用于小量表数据。

注意事项

操作前备份测试库(以防误操作)

确认测试库与生产库的 MySQL 版本兼容

确保目标数据库用户有建表和写入权限


下面是我的实操
我的生产库和测试库都在同一台服务器上(192.168.10.205),只是端口号不同,使用的都是 MySQL。

✅ 第一步:从"生产库(3307)"导出结构+数据

在终端运行以下命令导出整个 xss 数据库(表结构 + 数据)为一个 SQL 文件:

mysqldump -h 192.168.10.205 -P 3307 -u root -p'数据库连接密码' xss > /tmp/xss_prod_backup.sql

说明:
-P 3307 指定生产库的端口;
注意密码前不要加空格;
/tmp/xss_prod_backup.sql 是备份文件路径,你也可以改成其它路径;

✅ 第二步:将 SQL 文件导入到"测试库(3306)"

确保测试库的 xss 数据库存在。如果没有,先执行:

mysql -h 192.168.10.205 -P 3306 -u root -p'测试库密码' -e "CREATE DATABASE IF NOT EXISTS xss DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"

然后执行导入命令:

mysql -h 192.168.10.205 -P 3306 -u root -p'测试库密码' xss < /tmp/xss_prod_backup.sql

✅ 第三步:验证测试库数据

登录测试库查看:

mysql -h 192.168.10.205 -P 3306 -u root -p'测试库密码'
USE xss;
SHOW TABLES;

🔁 一键执行脚本(如果你想快速完成)

可以将下面内容保存成一个 .sh 文件执行,例如:sync_xss_db.sh

#!/bin/bash

echo "导出生产库..."
mysqldump -h 192.168.10.205 -P 3307 -u root -p'生产库密码' xss > /tmp/xss_prod_backup.sql

echo "创建测试库(如不存在)..."
mysql -h 192.168.10.205 -P 3306 -u root -p'测试库密码' -e "CREATE DATABASE IF NOT EXISTS xss DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"

echo "导入到测试库..."
mysql -h 192.168.10.205 -P 3306 -u root -p'测试库密码' xss < /tmp/xss_prod_backup.sql

echo "✅ 数据同步完成"

然后运行:

chmod +x sync_xss_db.sh
./sync_xss_db.sh

因为我是在 Windows 系统上运行命令,而 /tmp/xss_prod_backup.sql 是 Linux/macOS 路径格式,Windows 不识别这个路径,所以提示“系统找不到指定的路径”。

✅ 解决办法:将备份文件保存到 Windows 识别的路径

例如保存到 D:\backup\xss_prod_backup.sql:
1.创建备份目录(如果还没有)
打开 D: 盘,手动创建一个 backup 文件夹。

2.修改命令如下:

mysqldump -h 192.168.10.205 -P 3307 -u root -数据库密码 xss > D:\backup\xss_prod_backup.sql

注意事项:
-p 后 不要加引号或空格(Windows 下加引号可能会被当作参数一部分);

路径用 D:… 而不是 /tmp/…;

路径中不能有不存在的文件夹;

✅ 接下来导入到测试库(3306)

mysql -h 192.168.10.205 -P 3306 -u root -p123456 xss < D:\backup\xss_prod_backup.sql

执行代码时遇到下面的信息
mysqldump: [Warning] Using a password on the command line interface can be insecure.
这个提示信息是 正常的警告,它只是告诉你:

⚠️ “在命令行中直接使用密码存在安全风险。”

但不会影响你导出数据,只要没有报错,就说明备份文件 D:\backup\xss_prod_backup.sql 已成功生成。


网站公告

今日签到

点亮在社区的每一天
去签到