Change Stream 数据同步
版本: v1.0.8
功能: 实时同步数据到备份库
模式: CDC (Change Data Capture)
📋 概述
Change Stream 数据同步基于 MongoDB 原生 Change Stream 机制,实时监听数据变更并同步到多个备份库。
核心特性
- ✅ 实时同步:基于 MongoDB Change Stream,延迟 10-500ms
- ✅ 解耦设计:主库写操作不受影响,异步同步
- ✅ 断点续传:Resume Token 自动保存,重启后继续
- ✅ 多目标支持:同时同步到多个备份库
- ✅ 数据过滤:自定义过滤逻辑
- ✅ 数据转换:支持脱敏、字段转换
- ✅ 自动重连:网络中断自动恢复
- ✅ 健康检查:复用 ConnectionPoolManager
⚠️ 前提条件
必须满足
-
MongoDB Replica Set 🔴
-
MongoDB 版本 >= 4.0 🔴
-
用户权限 🔴
🚀 快速开始
基础配置
📖 配置选项
sync 配置
targets[].配置
resumeToken 配置
💡 使用示例
示例1:多备份目标
示例2:数据过滤
示例3:数据脱敏
示例4:Redis Resume Token
📊 性能影响
🔧 API
获取统计信息
手动停止同步
手动启动同步
❓ 常见问题
Q1: 提示 "Change Stream 不可用"
原因: MongoDB 不是 Replica Set
解决:
Q2: 同步有延迟?
原因: 网络延迟、备份库性能
解决:
- 检查网络延迟:
ping backup-host - 检查备份库性能:
db.serverStatus() - 减少同步的集合数量
Q3: Resume Token 丢失怎么办?
影响: 重启后从当前时间开始同步,丢失中间数据
解决:
- 使用 Redis 存储 Resume Token
- 定期备份 Resume Token 文件
- 手动全量同步一次
Q4: 如何处理同步失败?
自动处理:
- 单个目标失败不影响其他目标
- Change Stream 中断自动重连(最多5次)
手动处理:
🛡️ 最佳实践
1. 生产环境配置
2. 监控和告警
3. 优雅关闭
📚 更多资源
文档更新时间: 2026-01-17
版本: v1.0.9