mysql表复制方案

1. 逻辑复制:mysqldump 方法

mysqldump 将数据导出为一组 INSERT 语句,这是最常用的逻辑迁移方式 。

操作步骤

  1. 导出数据
bash 复制代码
mysqldump -h$host -u$user --single-transaction --add-locks=0 --no-create-info --set-gtid-purged=OFF db1 t --where="a>900" --result-file=t.sql
  • --single-transaction:导出时不加表锁,利用事务保证数据一致 。
  • --add-locks=0:生成的 SQL 不包含 LOCK TABLES 语句 。
  1. 导入数据
sql 复制代码
mysql -h$host -u$user db2 -e "source t.sql"
  • source 命令会读取文件并逐条执行 INSERT 语句 。

优缺点

  • 优点 :支持 WHERE 过滤(如只导出 a>900 的行),操作简单 。
  • 缺点:生成的 SQL 文件较大,导入速度相对较慢 。

2. 逻辑复制:CSV 文件导出导入

相比 mysqldump,直接操作 CSV 文件(SELECT INTO OUTFILE + LOAD DATA)效率更高,且支持所有 SQL 过滤写法 。

操作步骤

  1. 导出 CSV
sql 复制代码
SELECT * FROM db1.t WHERE a > 900 INTO OUTFILE '/tmp/t.csv';
  • 限制 :文件生成在 MySQL 服务端 。路径必须符合 secure_file_priv 参数的限制,且不能覆盖已有文件 。
  1. 导入数据
sql 复制代码
LOAD DATA INFILE '/tmp/t.csv' INTO TABLE db2.t;
  • 主备同步 :在 binlog_format=statement 时,主库会将 CSV 内容写进 binlog。备库接收后先写入本地临时目录,再执行 LOAD DATA LOCAL 导入,以保证主备数据一致 。

优缺点

  • 优点 :最灵活(支持复杂 SQL),速度比 mysqldump 快 。
  • 缺点 :每次只能导出一张表,且表结构需要单独用 SHOW CREATE TABLE 导出 。

3. 物理复制:传输表空间(Transportable Tablespace)

对于 TB 级别的大表,物理拷贝 .ibd 数据文件是 速度最快 的方案 。

核心术语

  • .ibd:InnoDB 的数据文件 。
  • .cfg:导出的描述文件(Metadata),用于在导入时让目标库识别拷贝的数据 。

操作流程(以将 t 拷贝到 r 为例)

  1. 准备环境 :创建同结构空表 CREATE TABLE r LIKE t;
  2. 移除旧空间ALTER TABLE r DISCARD TABLESPACE;(删除 r.ibd) 。
  3. 导出源表FLUSH TABLE t FOR EXPORT;(源表 t 变为只读,并生成 t.cfg) 。
  4. 搬运文件 :在操作系统层面执行 cp t.cfg r.cfg; cp t.ibd r.ibd;(需注意 MySQL 进程的读写权限) 。
  5. 释放源表UNLOCK TABLES;(删除临时的 t.cfg) 。
  6. 导入空间ALTER TABLE r IMPORT TABLESPACE;(MySQL 会修改文件中的表空间 ID 以匹配目标库) 。

优缺点

  • 优点:恢复速度最快,适合全表拷贝或从误删备份中恢复数据 。
  • 缺点必须全表拷贝,无法过滤数据;需要有服务器操作系统的权限;仅限 InnoDB 引擎 。
相关推荐
唐青枫2 小时前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
吃糖的小孩2 小时前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
小满8783 小时前
5.Mysql事务隔离级别与锁机制
mysql
笃行35020 小时前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行35020 小时前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行35020 小时前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库
元Y亨H21 小时前
技术笔记:MySQL 字符集排序规则与大小写敏感性问题解决方案
mysql
SelectDB2 天前
阶跃星辰基于 SelectDB 构建 PB 级 Agent 可观测平台
大数据·数据库·aigc
这个DBA有点耶2 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构