首页 文章 精选 留言 我的

精选列表

搜索[显存分片],共5613篇文章
优秀的个人博客,低调大师

用 DataX 做 MySQL 批量迁移:配置分片、限流、校验与可恢复执行

把 MySQL 数据导入另一套兼容 JDBC 的关系型数据库,看起来只需要连接源端、连接目标端,再执行一次同步任务。但真实迁移的难点通常不在“能否插入”,而在于以下问题: - 源库仍可能持续写入,迁移窗口内读到的数据并非天然一致; - 大表一次全量扫描会拖慢源库,也可能让目标端出现写入积压; - 表结构、默认值、字符集、时间精度和自增列规则可能不同; - 任务中断后,重新执行可能重复写入,或难以判断遗漏范围; - 只比较总行数无法发现字段截断、空值转换或局部数据缺失。 DataX 的定位是离线批量数据同步框架。对于 JDBC 类数据源,通常可以用 `reader` 顺序或并发读取,用 `writer` 批量写入目标端。它并不自动替代迁移设计:一致性边界、重跑语义、目标端约束处理和验收规则,仍应由迁移负责人明确。 本文采用“按主键区间分批迁移 + 每批校验 + 可记录进度”的方式。该方法的前提是源表存在稳定、可比较的递增主键或业务唯一键。若表没有这类字段,应先设计其他可重复切分的迁移边界,例如按日期分区;不要依赖无 `ORDER BY` 的物理读取顺序。 ## 迁移前先定义边界 以订单表 `orders` 为例,假定其主键为 `id`,迁移范围是历史数据 `id >= 1 AND id = 1 AND id = 1 AND id = 1 AND id = 1 AND id = 1 AND id < 1000001 GROUP BY status ORDER BY status; ``` 金额字段应注意源端与目标端的小数精度。若两端类型或舍入规则不同,直接比较聚合结果可能产生差异;此时应先确认业务允许的精度规则,再决定是否在查询中显式转换或四舍五入。 对于高价值表,还应抽查主键集合和逐行字段。例如按固定间隔抽取 ID,或对业务关键列计算确定性摘要。摘要计算必须统一空值表示、字符编码、时间格式和字段顺序,否则摘要不一致不一定意味着数据错误。不要把数据库特定的哈希函数结果跨引擎直接当作通用结论。 ## 常见问题 ### 读取很慢,增加 channel 也没有改善 先查看 `where` 条件和 `splitPk` 列是否可利用索引。对大范围读取,缺少合适索引可能使源端全表扫描。并发通道会放大扫描、连接和 I/O 压力,而不会自动补上索引能力。应先在源端执行等价查询并检查执行计划,再逐步提高并发。 ### 时间字段迁移后出现偏移 检查源端连接时区、目标端会话时区、字段类型是 `TIMESTAMP` 还是不带时区的日期时间类型,以及应用层展示时区。迁移前选取跨日、夏令时切换附近或业务高峰时段的样本进行比对。不同数据库和 JDBC 驱动对时间值的处理细节可能不同,不能仅凭显示结果推断哪一端错误。 ### 某些记录写入失败 将 `errorLimit.record` 保持为 `0` 可避免任务在有脏数据时“部分成功后继续完成”。根据日志定位具体列后,优先检查字符串长度、数值范围、非法日期、字符集和目标端约束。修复策略应可追踪:是修正源数据、在迁移查询中显式转换,还是建立异常记录清单后人工处理,都需要保留依据。 ### 目标端已经有部分数据 不要盲目切换成忽略冲突的写入模式。先确认已有数据来自哪次任务、是否完整、是否与源端同一版本,再选择清理后重跑、写入隔离表后比对,或使用经过目标数据库验证的幂等语句。迁移的关键是可证明结果正确,而不是让任务表面成功。 ## 总结 DataX 可以有效承担 MySQL 到 JDBC 目标库的离线批量同步,但迁移可信度来自边界设计和验证闭环。实践中应显式列出字段,以稳定主键或分区定义批次,按源端承受能力设置并发和限流,为每批保留状态与日志,并至少完成行数和关键业务聚合校验。 当源端持续写入、需要严格一致视图、目标端存在复杂约束,或必须实现近实时增量时,单次离线任务通常不够。此时应先明确一致性等级和停机窗口,再选择适合的快照、复制或变更捕获方案。把这些约束写入迁移方案,才能让“数据已搬完”变成可核验的工程结论。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册