• 1. (本页无文本内容)
  • 2. 分布式数据库同步谭俊青@途牛 mysqlab.net
  • 3. 背景 南、北数据同步存在延时 南、北专线可能会意外中断 南、北业务都不能中断 本地读取数据一致性不能得到保证 灾备需要
  • 4. 方案的选择 MySQL Replication MySQL Semi-sync Replication MySQL Cluster(NDB) Galera Cluster
  • 5. MySQL ReplicationWrites & ReadsMySQL MasterI/O ThreadSQL ThreadWritesrelay binlogMySQL Slavemysqlddataindex & binlogsmysqlddatabinlogReplication
  • 6. MySQL Cluster 架构
  • 7. MySQL 集群(NDB) GCP(Global check point) 数据存放在内存中,可能造成数据丢失 复杂Query效率低 内存容量要求高,数据容量有限 记录长度限制
  • 8. Galera Cluster 架构
  • 9. Galera Cluster 基于WS的同步复制 基于乐观策略,容易造成冲突 多机房通信会导致事务提交缓慢 会受到最差节点影响 一致性读会很糟糕
  • 10. 市面上HA组件 Keepalived Heartbeat Etc… 缺少第三方仲裁,会出现脑裂,造成数据丢失/数据不一致 2F+1 (F=1,2, …)
  • 11. 高可用概率 一台服务器每年的宕机时间是8小时 可用概率:1-8/24/365 ≈ 99.9% 两台服务器同时提供服务 可用概率:1-(8/24/365)^2 ≈ 99.9999% 除服务器,机房通信也可能会出问题 2F+1; F=1,2,…
  • 12. 3机房方案
  • 13. 原理 利用Raft选择其中一个机房服务作为Leader 其他机房服务为Follower 以MySQL为例 选择MySQL semi-sync作为日志同步方案 2F+1, F=1 正好满足
  • 14. 分布式一致性算法 Paxos Zookeeper Doozer Chubby Raft Etcd
  • 15. Raft简介 http://ramcloud.stanford.edu/raft.pdf
  • 16. 架构
  • 17. 写操作
  • 18. 读操作(Leader)
  • 19. 读操作(Follower)
  • 20. Q/A 欢迎提问
  • 21. @InfoQinfoqchina