Cdc@ganji.com

1,179 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,179
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Cdc@ganji.com

  1. 1. MySQL异构数据同步方案 赶集网CDC项目实践 蔡峰 caifeng@ganji.com
  2. 2. 目录关于异构数据同步Tungsten Replicator介绍赶集CDC项目实践CDC在赶集的应用案例
  3. 3. 1 关于异构数据同步
  4. 4. LAMP架构面临的挑战性能提升 Caching多平台 Key-Value web/wap/mobile Indexing社交化(SNS) OLAP离线/实时统计分析 Graph DB数据挖掘 BigTable多机房 ...
  5. 5. Not Only SQL!MySQL的优势 放弃MySQL的障碍 ACID 大量业务代码 查询功能强大 熟悉的开发模式 成熟的运维方案 人员储备 技术风险 如何保证数据的同步?
  6. 6. 应用层解决...在业务代码中维护 缺点 多写 代码复杂,维护困难 消息中间件异步处理 工作量大,效率下降 简单,灵活 容易引入BUG 容错能力差分布式事务?开发效率?服务化?
  7. 7. 系统层面... 方案 项目 PHP mysqlndLanguage API JDBC MySQL ProxyData Middleware VitessMySQL Trigger + UDF FlexviewsMySQL Binlog Parser Amoeba JBinlog
  8. 8. 其它...http://www.tbdata.org/ (未开源)
  9. 9. Change Data Capture数据库级别实现的增量抽取解决方案 监视表的数据变化。 改善ETL的效率。 为检索系统提供数据更新。 实现第三方的数据同步。 提供外部的数据触发操作。
  10. 10. 2 Tungsten Replicator介绍
  11. 11. tungsten-replicatorData replication engine for MySQL Easy failover Multiple masters Multiple sources to a single slave Parallel replication Replicate to Oracle and PostgreSQL OReilly MySQL Application of the Year 2011 http://code.google.com/p/tungsten-replicator/
  12. 12. Key PointsTransaction History Logs (THL) Global Transaction ID MetadataService Database
  13. 13. TR 典型架构
  14. 14. 扩展MCQueueApplier Inspired by MongoDBApplier https://github.com/tailorcai/tungsten-queue-applier
  15. 15. 实现细节MySQL 编码(JSON) Row Based Replication Meta: Schema,TableKestrel Action: Insert/Update/Delete Memcache Protocol Row Data High Performance Persistence Fan-out Queue Tungsten Reliable Get ReplicationFilter https://github.com/robey ColNamesFilter /kestrel
  16. 16. 优化配置 Replication Queue extractor ColNames Applier Extractor Filter Applier Kestre MySQL Queue独立服务器BinLog “Trigger” ServerNo THL
  17. 17. 3 赶集网CDC项目实践
  18. 18. Availability? 需求服务崩溃 MySQL 数据重复 Tungsten Kestrel 乱序? 数据丢失 Hardware网络故障 对业务透明 自动响应 数据丢失 同步延迟
  19. 19. Master/Slave CDC Master switcherMySQL 应用逻辑Master CDC Slave 根据延迟信息进行切换
  20. 20. Master/Slave 2P1 P2 P3 P4 P5 P6 P1 P7 P2 P3 ... P1 P2 P3 P4 P5 P6 P1 P7 P2 P3 ... 更新数据流
  21. 21. Master/Slave 2 block1 block2 P1 P2 P3 P4 P5 H1 P6 P1 P7 P2 … P3 P1 P2 P3 P4 P5 H1 P6 P1 P7 P2 … P3 SN: 100 Timestamp: 13000000 Delay=now() - timestamp定时更新heartbeat表,生成heartbeat数据以Block为单位进行切换Master处理完成一个Block后,通知Slave处理该Block切换时,Slave重放当前Block,确保数据不丢失
  22. 22. Zookeeper信息 格式 描述配置 主CDC服务器地址 启动,切换 从CDC服务器地址Switcher进程 0 – 主处理进程HOST:PID 任务分配 1 – 从处理进程HOST:PID 2 - 备份进程 HOST:PID处理状态 主CDC 状态监控 Block SN 同步 最新的timestamp
  23. 23. 优点实时 高可用系统延时 <100ms 可用于线上业务 独立性 对线上业务的非侵入性 可移植性 事务友好 灵活 支持多库,多表 同时支持多种后端应用,互相独立 数据一致性 数据随意组合 与DB保持严格一致 数据可以回放
  24. 24. CDC的运维和监控DBA要注意 批量更新一定加Limit 数据分片<5W 插入sleep,缓解延迟影响 注意BinLog 滚动 编码方式监控和报警(zabbix...) 主从同步状态 延迟(MySQL,CDC)
  25. 25. 4 CDC在赶集的应用案例
  26. 26. Indexing & Caching分类信息 写 MySQL CDC读 Searcher Xapian Indexer Data Memcache 批量数据更新?
  27. 27. 跨机房同步 App主机房A 延迟不一致 Master Message 产生数据错误 Queue DB MQ Search/Cache Slave DB App 机房B
  28. 28. 跨机房同步主机房A 部署新机房 <2个月 代码修改工作量<1人月 Master 没有延迟同步问题 DB Slave DB Search/Cache CDC 机房B
  29. 29. 数据迁移场景 优点 表结构调整 不需要修改现有业务 存储调整 不需要修改表结构 异构数据库 停服时间短 MySQL → NoSQL关键点 如何获取增量数据 如何较少开发的工作量 如何减少停服时间
  30. 30. 更多... 更新客户信息 Call Center 支付及收入 ERP数据更新历史记录 Data + Version 数据校验
  31. 31. 计划 ...应用开发 历史数据回放/全量数据抽取 更友好的API接口及订阅功能 多种数据一致性保证系统 Tungsten 2.0.5 JSON to BSON Int64? Binary? 故障自动切换
  32. 32. 类似项目
  33. 33. 谢谢! Questions?We are hiring... PHP研发工程师 WEB前端研发工程师

×