背景:多环境、多集群、可切换
DX 运行管理系统部署在内网多云环境中,包含多个项目集群。业务要求系统能在不同环境之间实时备份相关数据,并在需要时切换主系统。真正困难的是“切换”背后的数据一致性:切过去之后数据要新,切回来之后不能丢。
核心难点
- 数据量:10 亿级数据的存量初始化与持续增量同步。
- 吞吐:Redis 级数据库需要支撑 12 万 QPS 的同步与迁移。
- 环境差异:K8s 集群、镜像版本、配置和网络策略不一致。
- 一致性:切换窗口内不能丢写,失败要能断点续传和回滚。
方案:分层同步 + 可验证切换
1. 关系型数据
使用 SeaTunnel 做全量与增量同步:先按分片做存量初始化,再基于日志做实时增量。同步任务记录位点和校验摘要,失败从断点恢复,避免全量重跑。
2. Redis 数据
使用 RedisShake 做数据迁移,结合 key-space events 捕获增量变更,覆盖字符串、哈希、列表、集合和有序集合等结构。对热点 key 做限速和重试,避免迁移流量压垮源库。
3. 环境同步
通过 K8s 编排完成不同环境的镜像、配置和密钥同步;配置项按环境模板化,敏感信息走独立密钥管理,不进入镜像和代码仓库。
4. 切换与回滚
切换前做数据校验和延迟检查,切换时冻结写入、等待同步追平、验证关键表摘要,再放量;回滚路径提前演练,确保任何一步失败都能退回原环境。
结果
10 亿级存量与增量数据实时同步
12 万 QPSRedis 级数据库同步与迁移
多环境K8s 镜像与配置同步
系统支撑了 10 亿级数据的实时同步、12 万 QPS 级的 Redis 数据迁移,以及多环境之间的镜像与配置同步;主系统切换从高风险人工操作变成有校验、可回滚的标准流程。
复盘
数据同步的难点不是“能同步”,而是“敢切换”。同步延迟、校验、断点和回滚必须一起设计,否则数据量越大,切换越不敢做。