首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >10亿数据,如何做迁移?

10亿数据,如何做迁移?

作者头像
oktokeep
发布于 2025-05-29 00:27:42
发布于 2025-05-29 00:27:42
5300
代码可运行
举报
文章被收录于专栏:第三方工具第三方工具
运行总次数:0
代码可运行

10亿数据,如何做迁移?

一、分而治之 若把数据迁移比作吃蛋糕,没人能一口吞下整个十层蛋糕; 必须切成小块细嚼慢咽。

避坑案例:线程池滥用引发的血案 某团队用100个线程并发插入新库,结果目标库死锁频发。 最后发现是主键冲突导致——批处理必须兼顾顺序和扰动。

二、双写 经典方案是停机迁移,但对10亿数据来说停机成本难以承受,双写方案才是王道。

双写的三种段位: 青铜级:先停写旧库→导数据→开新库 →风险:停机时间不可控 黄金级:同步双写+全量迁移→差异对比→切流 →优点:数据零丢失 王者级:逆向同步兜底(新库→旧库回写),应对切流后异常场景

当然双写分为: 同步双写 异步双写 同步双写实时性更好,但性能较差。 异步双写实时性差,但性能更好。

三、用好工具 工具名称 适用场景 10亿数据速度参考 mysqldump 小型表全量导出 不建议(可能天级) MySQL Shell InnoDB并行导出 约2-4小时 DataX 多源异构迁移 依赖资源配置 Spark 跨集群大数据ETL 30分钟-2小时

Spark迁移核心代码片段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val jdbcDF = spark.read  
    .format("jdbc")  
    .option("url", "jdbc:mysql://source:3306/db")  
    .option("dbtable", "users")  
    .option("partitionColumn", "id")  
    .option("numPartitions", 100) // 按主键切分100个区  
    .load()  

jdbcDF.write  
    .format("jdbc")  
    .option("url", "jdbc:mysql://target:3306/db")  
    .option("dbtable", "new_users")  
    .mode(SaveMode.Append)  
    .save()

避坑经验: 分区数量应接近Spark执行器核数,太多反而降低效率 分区字段必须是索引列,防止全表扫

四、影子测试 - 迁移后的数据一致性验证 影子库验证流程: 生产流量同时写入新&旧双库(影子库) 对比新旧库数据一致性(抽样与全量结合) 验证新库查询性能指标(TP99/TP95延迟)

五、回滚 即便做好万全准备,也要设想失败场景的回滚方案

回滚预案关键点: 备份快照:迁移前全量快照(物理备份+ Binlog点位) 流量回切:准备路由配置秒级切换旧库 数据标记:新库数据打标,便于清理脏数据

处理10亿数据的核心: 分而治之:拆解问题比解决问题更重要 逐步递进:通过灰度验证逐步放大流量 守牢底线:回滚方案必须真实演练过 没有百分百成功的迁移,只有百分百准备的Plan B!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
给你10亿数据,如何做迁移?
24小时后监控警报显示:由于全表扫描SELECT * FROM users导致源库CPU几乎熔毁,业务系统被迫停机8小时。
苏三说技术
2025/02/21
1190
给你10亿数据,如何做迁移?
10亿订单如何做分库分表?
解决方案:引入复合分片键 (merchant_id + user_id) % 1024
苏三说技术
2025/07/04
1530
10亿订单如何做分库分表?
企业云迁移实战指南:基于腾讯云的全栈迁移方案与行业实践
在数字经济时代,企业应用从本地基础设施向云端迁移已成为推动数字化转型的核心战略举措。根据国际权威机构Omdia的最新调研数据,73%的VMware客户正在积极寻求在未来三年内迁移到云平台,这一趋势在Broadcom收购VMware后因许可证政策变更和成本上升而显著加速。与此同时,中国制造业领军企业美的集团的全球化战略则揭示了另一个关键驱动因素——该集团将其欧洲业务系统整体迁移至腾讯云法兰克福数据中心后,不仅实现了业务系统的容器化升级,更将新品上线周期从2周缩短至3天,跨境业务协同效率提升40%。
徐关山
2025/07/17
1490
如何不停服迁移数据
数据迁移时, 为了保证数据的一致性, 往往伴随着停服, 此期间无法给用户提供服务或只能提供部分服务. 同时, 为了确保迁移后业务及数据的正确性, 迁移后测试工作也要占用不少时间. 如此造成的损失是比较大的.
猿天地
2019/11/12
1.6K0
如何不停服迁移数据
100亿数据平滑数据迁移,不影响服务
一、问题的提出 互联网有很多“数据量较大,并发量较大,业务复杂度较高”的业务场景,其典型系统分层架构如下: (1)上游是业务层biz,实现个性化的业务逻辑 (2)中游是服务层service,封装数据访
架构师之路
2018/03/01
3K0
100亿数据平滑数据迁移,不影响服务
不停机更换数据库解决方案
整个迁移过程,既不能长时间停服,也不能丢数据。如何不停机安全地迁移数据更换数据库。
JavaEdge
2023/01/03
1.2K0
不停机更换数据库解决方案
🏷️ 300TB迁移场景的挑战拆解
在金融级核心系统迁移项目中,我们面临了一次史诗级挑战:将300TB交易数据库从IDC机房迁移至腾讯云,且业务要求零感知停机。这相当于在飞机飞行中更换引擎——任何细微抖动都可能引发连锁反应。
Jimaks
2025/04/23
1560
spark2 sql读取数据源编程学习样例2:函数实现详解
问题导读 1.RDD转换为DataFrame需要导入哪个包? 2.Json格式的Dataset如何转换为DateFrame? 3.如何实现通过jdbc读取和保存数据到数据源? spark2 sql
用户1410343
2018/03/26
1.5K0
spark2 sql读取数据源编程学习样例2:函数实现详解
数据迁移,不停机上线的正确姿势
互联网系统,经常会有数据迁移的需求。系统从机房迁移到云平台,从一个云平台迁移到另一个云平台,系统重构后表结构发生了变化,分库分表,更换数据库选型等等,很多场景都需要迁移数据。
用户7927337
2020/11/04
5.2K1
数据迁移,不停机上线的正确姿势
日订单量达到100万单后,我们做了订单中心重构
几年前我曾经服务过的一家电商公司,随着业务增长我们每天的订单量很快从30万单增长到了100万单,订单总量也突破了一亿。当时用的Mysql数据库。根据监控,我们的每秒最高订单量已经达到了2000笔(不包括秒杀,秒杀TPS已经上万了。秒杀我们有一套专门的解决方案,详见《秒杀系统设计~亿级用户》)。不过,直到此时,订单系统还是单库单表,幸好当时数据库服务器配置不错,我们的系统才能撑住这么大的压力。
用户7927337
2020/11/04
2.6K1
日订单量达到100万单后,我们做了订单中心重构
十几亿用户中心系统架构,落地实践!
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/03/28
6030
分库分表在大厂的实践
现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?
JavaEdge
2022/11/30
3650
分库分表在大厂的实践
1亿数据量MySQL,如何实现秒级扩容?
数据库上层都有一个微服务,服务层记录“业务库”与“数据库实例配置”的映射关系,通过数据库连接池向数据库路由sql语句。
架构师之路
2024/01/23
3820
1亿数据量MySQL,如何实现秒级扩容?
MySQL迁移技术指南:腾讯云DTS深度实践与架构优化
摘要:本文深入解析MySQL迁移的核心挑战与腾讯云DTS的解决方案,提供全流程操作指南及量化对比。通过零停机迁移、自动校验等特性,DTS将迁移效率提升300%(IDC 2024报告),故障率降低90%。
爱吃鱼的企鹅
2025/06/21
740
数据迁移的套路
因为我们的数据不是静态的,所以我们不能随便写个job迁移就好了。需要确保一些迁移上的标准
方丈的寺院
2020/05/12
1.2K0
数据库分库分表后,我们生产环境怎么实现不停机数据迁移
昨天我们讲解了数据库分库分表后我们怎么去生成主键唯一ID(数据库分库分表后,我们怎么保证ID全局唯一),到目前为止我们已经掌握分库分表的策略了也会搭建统一发号器进行生成唯一ID。
架构师修炼
2020/07/17
3K1
vivo 全球商城:订单中心架构设计与实践
原创 官网商城开发团队 [vivo互联网技术](javascript:void(0)😉 1周前 收录于话题 #架构设计 16 #vivo商城 7 一、背景 随着用户量级的快速增长,vivo 官方商城 v1.0 的单体架构逐渐暴露出弊端:模块愈发臃肿、开发效率低下、性能出现瓶颈、系统维护困难。 从2017年开始启动的 v2.0 架构升级,基于业务模块进行垂直的系统物理拆分,拆分出来业务线各司其职,提供服务化的能力,共同支撑主站业务。 订单模块是电商系统的交易核心,不断累积的数据即将达到单表存储瓶颈,系统难以支
jwangkun
2021/12/23
1.3K0
vivo 全球商城:订单中心架构设计与实践
亿级大表分库分表实战总结(万字干货,实战复盘)
分库分表的文章网上非常多,但是大多内容比较零散,以讲解知识点为主,没有完整地说明一个大表的切分、新架构设计、上线的完整过程。
全栈程序员站长
2021/04/07
9750
做一次完美的数据迁移
数据迁移,是一个非常复杂的过程,不仅仅是将数据从一个地方移动到另一个地方。这里需要考虑业务定义、架构变更、应用改造、数据安全等诸多方面问题。在实际迁移工作中,需要结合企业的方方面面,做好合理的规划及实施,否则很可能会导致迁移结果达不到预期,浪费人力财力。在正式开始迁移之前,有几项工作是需要提前考虑的。
用户5548425
2020/06/04
1.9K0
Adobe 将 PB 级数据迁移到 Iceberg 的实践与经验教训
作者 | Adobe 译者 | 王强 策划 | 蔡芳芳 在我们之前的几篇博文 《Iceberg 在 Adobe 的应用》《基于写入 Iceberg 的缓存的数据摄取》 和 《Iceberg 的读取优化》 中,我们了解了 Apache Iceberg 的诸多优势,看到了它是如何与 Adobe 体验平台(Adobe Experience Platform)的整体架构相适应的。在这篇博文中,我们将分享 Adobe 将超过 1PB 的数据集迁移到 Adobe 体验平台数据湖(Datalake)上的 Iceberg
深度学习与Python
2023/04/01
8400
Adobe 将 PB 级数据迁移到 Iceberg 的实践与经验教训
相关推荐
给你10亿数据,如何做迁移?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档