当前位置: 代码网 > it编程>数据库>Mysql > mysql迁移指定表历史数据的多种方案

mysql迁移指定表历史数据的多种方案

2026年01月08日 Mysql 我要评论
方案一:使用mysqldump导出导入通过mysql自带的mysqldump工具导出指定表的历史数据,再导入到目标数据库。适合数据量中等且允许停机迁移的场景。# 导出指定表结构和数据(按条件筛选历史数

方案一:使用mysqldump导出导入

通过mysql自带的mysqldump工具导出指定表的历史数据,再导入到目标数据库。适合数据量中等且允许停机迁移的场景。

# 导出指定表结构和数据(按条件筛选历史数据)
mysqldump -u username -p dbname tablename --where="create_time<'2023-01-01'" > history_data.sql
# 导入到目标数据库
mysql -u username -p target_db < history_data.sql

方案二:etl工具同步

使用kettle、talend等etl工具建立数据管道,可实现定时增量同步。适合需要持续同步历史数据的场景。

  • 配置源数据库和目标数据库连接
  • 编写转换流程:添加输入表(带时间条件筛选)、字段映射、输出表
  • 设置定时任务或立即执行

方案三:程序分批迁移

编写脚本分批次查询和插入数据,避免大事务导致数据库负载过高。适合大数据量迁移。

import pymysql
batch_size = 5000
src_conn = pymysql.connect(source_db_config)
dst_conn = pymysql.connect(target_db_config)
while true:
    with src_conn.cursor() as cursor:
        cursor.execute(f"select * from orders where order_date<'2022-01-01' limit {batch_size}")
        batch = cursor.fetchall()
        if not batch: break
    with dst_conn.cursor() as cursor:
        cursor.executemany("insert into orders_archive values(%s,%s,...)", batch)
    dst_conn.commit()

方案四:主从复制过滤

配置mysql主从复制时设置复制过滤器,仅同步特定表的历史数据。适合实时性要求高的场景。

# 在my.cnf中配置
replicate-wild-do-table=dbname.tablename_2020%
replicate-wild-do-table=dbname.tablename_2021%

方案五:表空间传输

对于innodb引擎,可直接导出表空间文件快速迁移。要求mysql版本5.6+且目标表结构已存在。

-- 源库执行
flush tables tablename for export;
-- 拷贝.ibd和.cfg文件到目标服务器
-- 目标库执行
alter table tablename import tablespace;

注意事项

  • 大表迁移建议在低峰期进行
  • 迁移前后校验数据量和关键字段一致性
  • 考虑建立临时索引加速历史数据查询
  • 对于频繁更新的表,迁移期间建议锁定写入

到此这篇关于mysql迁移指定表历史数据的多种方案的文章就介绍到这了,更多相关mysql迁移指定表内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • ClickHouse使用MySQL数据库引擎的实现

    ClickHouse使用MySQL数据库引擎的实现

    clickhouse使用mysql数据库引擎mysql作为一种关系型数据库管理系统,主要擅长oltp(在线事务处理)场景,能高效处理增删改查等事务操作,保证数据... [阅读全文]
  • mysql覆盖索引的项目实践

    mysql覆盖索引的项目实践

    在 mysql 中,覆盖索引(covering index) 是一种非常重要的查询优化技术。它的核心思想是:一个索引包含了查询所需的所有字段,因此 mysql ... [阅读全文]
  • MYSQL的日志文件详解

    MYSQL的日志文件详解

    mysql 的日志系统是其高可用性、数据安全和性能优化的基石。不同类型的日志各司其职,了解它们对于数据库管理至关重要。下面这个表格清晰地汇总了mysql主要日志... [阅读全文]
  • MySQL数据库意向锁超级入门篇

    MySQL数据库意向锁超级入门篇

    在 mysql(主要是 innodb 存储引擎) 中,意向锁(intention lock) 是一种 表级锁,用来表示事务打算在表中的某些行上加什么类型的行锁,... [阅读全文]
  • 一文搞懂MySQL 数据库意向锁

    一文搞懂MySQL 数据库意向锁

    在本篇开始阅读前,建议看下《mysql数据库 意向锁(初篇)》章节,对意向所有个大概了解。一、用“分层锁”的图示理解意向锁(核心)inn... [阅读全文]
  • linux安装mysql8.0全过程

    1.阿里巴巴镜像站下载安装包地址:mysql-mysql-8.0安装包下载_开源镜像站-阿里云查看服务器架构,下载对应安装包uname -m 2.上传解压包到usr/local解压…

    2026年01月11日 数据库

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com