MySQL 数据库复制完整指南
复制 MySQL 数据库通常分为三种主流场景:使用命令行工具(最通用)、使用 SQL 语句(适用于单表或小库)以及使用图形化管理工具,以下是详细的操作步骤。
使用 mysqldump 命令行工具(最推荐)
这是最标准且最安全的方法,适用于同服务器复制或跨服务器迁移。
导出原数据库
将原数据库的数据导出为一个 .sql 文件。
- 命令格式:
mysqldump -u [用户名] -p [原数据库名] > backup.sql - 示例:
mysqldump -u root -p old_database > backup.sql
创建新数据库
登录 MySQL 并创建用于接收数据的目标数据库。
- SQL 语句:
CREATE DATABASE new_database CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
导入数据到新数据库
将导出的 .sql 文件导入到新创建的数据库中。
- 命令格式:
mysql -u [用户名] -p [新数据库名] < backup.sql - 示例:
mysql -u root -p new_database < backup.sql
⚡ 快捷方式:一行命令完成复制(无需中间文件)
如果你在同一台服务器上,可以使用管道符直接传输:mysqldump -u [用户名] -p [原数据库名] | mysql -u [用户名] -p [新数据库名]
使用 SQL 语句复制(适用于小规模数据)
如果你只需要复制部分表,或者数据库规模非常小,可以使用 SQL 语句。注意:这种方法不会自动复制索引、触发器和外键约束。
创建新数据库
CREATE DATABASE new_database;
复制表结构
CREATE TABLE new_database.table_name LIKE old_database.table_name;
复制表数据
INSERT INTO new_database.table_name SELECT FROM old_database.table_name;
使用图形化管理工具(最简单)
如果你不熟悉命令行,可以使用 Navicat、MySQL Workbench 或 phpMyAdmin。
- Navicat:
- 右键点击原数据库 $rightarrow$ 选择 “数据传输” (Data Transfer)。
- 在“源”中选择原数据库,在“目标”中选择新数据库(或创建新库)。
- 点击“开始”即可自动完成结构和数据的复制。
- MySQL Workbench:
- 使用 “Data Export” 导出原库 $rightarrow$ 创建新库 $rightarrow$ 使用 “Data Import” 导入。
⚠️ 核心注意事项
在复制数据库时,请务必检查以下几点以避免报错或数据损坏:
- 权限检查:确保执行操作的用户拥有
SELECT、LOCK TABLES(原库)和CREATE、INSERT(新库)的权限。 - 字符集一致性:创建新数据库时,请确保 Character Set(如
utf8mb4)与原数据库一致,否则会出现中文乱码。 - 存储引擎:检查原表是
InnoDB还是MyISAM,确保目标环境支持相应的引擎。 - 大数据库优化:如果数据库非常大(几十GB以上),建议在
mysqldump时添加--single-transaction参数,以避免锁表影响业务。 - 视图与存储过程:使用
mysqldump时,如果需要复制存储过程和函数,请加上-R参数:mysqldump -u root -p -R old_database > backup.sql
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/491630.html



