灯下哥谭 灯下哥谭
首页
关于
  • Hermes Agent 平台
  • Claude Code
  • OpenClaw
  • GPU 推理节点运维
  • DeepSeek Harness
  • MySQL 运维知识地图
  • Elasticsearch 运维知识地图
  • Redis 运维知识地图
  • TiDB 体系
  • DBA 常用 SQL 与命令
  • Nginx 运维知识地图
  • Prometheus 监控
  • Docker
  • Systemd
  • Iptables
  • Firewalld
  • Sshd
  • MySQL8 运维 SOP 手册
  • MySQL 实战 45 讲(读书笔记)
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

灯下哥谭

灯还亮着
首页
关于
  • Hermes Agent 平台
  • Claude Code
  • OpenClaw
  • GPU 推理节点运维
  • DeepSeek Harness
  • MySQL 运维知识地图
  • Elasticsearch 运维知识地图
  • Redis 运维知识地图
  • TiDB 体系
  • DBA 常用 SQL 与命令
  • Nginx 运维知识地图
  • Prometheus 监控
  • Docker
  • Systemd
  • Iptables
  • Firewalld
  • Sshd
  • MySQL8 运维 SOP 手册
  • MySQL 实战 45 讲(读书笔记)
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • MySQL8-SOP

  • 课程笔记

    • MySQL实战45讲

      • MySQL45讲学习笔记
      • MySQL基础架构
      • MySQL日志系统 (Redo Log 与 Binlog)
      • MySQL事务隔离级别的实现原理
      • MySQL索引原理与优化
      • MySQL锁机制详解
      • MySQL事务与MVCC机制
      • MySQL普通索引与唯一索引的选择
      • MySQL优化器如何选择索引
      • MySQL字符串字段索引优化
      • MySQL抖动刷脏页
      • 表空间管理与回收
      • COUNT函数详解
      • 日志索引
      • orderby工作原理
      • 随机排序实现
      • SQL性能差异函数与转换
      • 慢查询分析锁与版本
      • 幻读与间隙锁
      • 加锁规则分析
      • 应急性能优化方法
      • 数据持久化保证
      • 主备一致性原理
      • 高可用架构与切换
      • 备库延迟分析与优化
      • 主备切换GTID
      • 读写分离实践与问题
      • 数据库健康检查
      • 锁与死锁
      • 数据误删恢复
      • Kill命令详解
      • 查询与内存使用分析
      • Join原理与选择
      • 临时表原理与应用
      • 内部临时表详解
      • Memory引擎详解
      • 自增ID详解
      • Insert加锁分析
      • 表复制方法比较
        • 1. 表复制概述
        • 2. 常见的表复制方法
          • 2.1 CREATE TABLE ... AS SELECT
          • 2.2 CREATE TABLE ... LIKE
          • 2.3 INSERT INTO ... SELECT
          • 2.4 mysqldump工具
          • 2.5 mysqlpump工具
          • 2.6 物理复制(文件级复制)
        • 3. 各种方法对比
        • 4. 选择建议
          • 4.1 快速创建新表
          • 4.2 结构复制
          • 4.3 数据迁移
          • 4.4 备份恢复
          • 4.5 性能要求高的场景
        • 5. 实际应用示例
          • 5.1 创建备份表
          • 5.2 条件性数据复制
          • 5.3 跨数据库复制
        • 6. 注意事项
      • Grant与权限管理
      • 分区表详解
      • SQL语句中的Join问题
      • 自增ID用尽问题
  • 专题系列
  • 课程笔记
  • MySQL实战45讲
灯下哥谭
2024-07-27
目录

表复制方法比较

# 表复制方法比较

# 1. 表复制概述

在MySQL中,表复制是指将一个表的数据或结构复制到另一个表的过程。根据需求不同,有多种复制方法可供选择。

# 2. 常见的表复制方法

# 2.1 CREATE TABLE ... AS SELECT

CREATE TABLE new_table AS SELECT * FROM old_table;
1
  • 复制表结构和数据
  • 新表会继承原表的索引和约束
  • 适用于完全复制场景

# 2.2 CREATE TABLE ... LIKE

CREATE TABLE new_table LIKE old_table;
1
  • 只复制表结构,不复制数据
  • 保留原表的所有约束和索引定义
  • 适用于结构复制场景

# 2.3 INSERT INTO ... SELECT

INSERT INTO new_table SELECT * FROM old_table;
1
  • 复制数据到已存在的表中
  • 表必须已经存在
  • 可以添加WHERE条件进行筛选

# 2.4 mysqldump工具

mysqldump -u username -p database_name table_name > backup.sql
1
  • 导出为SQL脚本文件
  • 可以用于跨服务器复制
  • 支持压缩和增量备份

# 2.5 mysqlpump工具

mysqlpump -u username -p database_name table_name > backup.sql
1
  • MySQL 5.7+提供的增强版备份工具
  • 支持并行备份
  • 性能优于mysqldump

# 2.6 物理复制(文件级复制)

  • 直接复制数据文件
  • 需要停止数据库服务
  • 速度最快但风险较高

# 3. 各种方法对比

方法 复制结构 复制数据 适用场景 优点 缺点
CREATE TABLE ... AS SELECT ✓ ✓ 快速创建新表 简单直接 不能指定表名
CREATE TABLE ... LIKE ✓ ✗ 结构复制 保留所有约束 不复制数据
INSERT INTO ... SELECT ✗ ✓ 数据迁移 灵活可控 需要表已存在
mysqldump ✓ ✓ 备份恢复 跨平台兼容 速度较慢
mysqlpump ✓ ✓ 备份恢复 并行处理 仅MySQL 5.7+
物理复制 ✓ ✓ 快速恢复 速度快 风险高

# 4. 选择建议

# 4.1 快速创建新表

推荐使用 CREATE TABLE ... AS SELECT,因为它最简单且能同时复制结构和数据。

# 4.2 结构复制

推荐使用 CREATE TABLE ... LIKE,因为它能完整保留原表的约束和索引。

# 4.3 数据迁移

推荐使用 INSERT INTO ... SELECT,因为可以添加过滤条件,并且可以控制何时进行复制。

# 4.4 备份恢复

推荐使用 mysqldump 或 mysqlpump,因为它们提供了更好的兼容性和功能。

# 4.5 性能要求高的场景

推荐使用物理复制,但需要注意停机时间和数据一致性。

# 5. 实际应用示例

# 5.1 创建备份表

-- 创建带数据的备份表
CREATE TABLE users_backup AS SELECT * FROM users;

-- 创建结构相同的空表
CREATE TABLE users_archive LIKE users;
1
2
3
4
5

# 5.2 条件性数据复制

-- 只复制特定条件的数据
INSERT INTO users_backup 
SELECT * FROM users WHERE created_date >= '2023-01-01';
1
2
3

# 5.3 跨数据库复制

-- 将数据复制到另一个数据库
INSERT INTO other_database.users SELECT * FROM current_database.users;
1
2

# 6. 注意事项

  1. 权限要求:执行复制操作需要相应的数据库权限
  2. 存储空间:复制过程中需要足够的磁盘空间
  3. 锁机制:大量数据复制可能会影响性能
  4. 数据一致性:在复制过程中要注意数据的一致性问题
  5. 字符集:确保源表和目标表的字符集兼容
  6. 索引重建:某些情况下复制后可能需要重新构建索引
#学习笔记#MySQL
上次更新: 9/11/2026

← Insert加锁分析 Grant与权限管理→

最近更新
01
DeepSeek Harness 实战 06|学习笔记:插件、工具、技能不在同一个维度上 原创
09-11
02
DeepSeek Harness 实战 05|让两个编码 Agent 共用一份长期记忆 原创
09-09
03
DeepSeek Harness 实战 04|学习笔记:从「已知限制」里读出三处设计张力 原创
09-08
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式