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 引擎 。
相关推荐
m0_463672201 小时前
mysql数据库如何进行逻辑备份与物理备份对比_优缺点分析
jvm·数据库·python
2401_867623981 小时前
SQL如何进行分组后字符串拼接_使用GROUP_CONCAT或STRING_AGG
jvm·数据库·python
kexnjdcncnxjs1 小时前
MySQL触发器无法触发的原因分析_MySQL触发器排查指南
jvm·数据库·python
六月雨滴2 小时前
存储性能监控与优化及最佳实践总结
数据库·oracle·dba
我先去打把游戏先2 小时前
【保姆级图文教程】:VMware虚拟机安装Ubuntu Server 22.04
linux·数据库·ubuntu
IpdataCloud2 小时前
企业级IP定位服务准确率怎么保证?从数据源到离线库的精度提升指南
运维·服务器·网络·数据库·tcp/ip
学习论之费曼学习法2 小时前
Agent记忆系统:让AI拥有长期记忆能力
数据库·人工智能·oracle
2301_781571423 小时前
NumPy张量缩并怎么用_np.einsum()爱因斯坦求和约定高级索引魔法
jvm·数据库·python
Mr. zhihao3 小时前
Agentic 知识库:Agent Wiki不是取代向量数据库,而是让 Agent 学会“多模态思考”
数据库·agent·angetic