基于MySQL开放复制协议的数据同步       简朝阳    @mbaobao.com     2011.06.12         1
基于MySQL开放复制协议的数据同步简朝阳(sky000)Oracle ACE (Expertise MySQL)技术保障部 @麦包包http://isky000.comhttp://twitter.com/sky000http://weibo...
基于MySQL开放复制协议的数据同步       原生现状介绍   主   题   纲   要        3
基于MySQL开放复制协议的数据同步       原生现状介绍       现实业务需求   主   题   纲   要        4
基于MySQL开放复制协议的数据同步       原生现状介绍       现实业务需求   主   题   纲   要   应该如何扩展        5
基于MySQL开放复制协议的数据同步       原生现状介绍       现实业务需求   主   题   纲   要   应该如何扩展       架构示例展示         6
原生 MySQL Replication 现状原生现状               7
原生 MySQL Replication 现状      实现机制原生现状               8
原生 MySQL Replication 现状             • 3个线程:2 个 io 线程,1个 sql线程      实现机制   • 2种日志:binlog,relaylog             • 1种实现:全程异步原生...
原生 MySQL Replication 现状             • 3个线程:2 个 io 线程,1个 sql线程      实现机制   • 2种日志:binlog,relaylog             • 1种实现:全程异步原生...
原生 MySQL Replication 现状             • 3个线程:2 个 io 线程,1个 sql线程      实现机制   • 2种日志:binlog,relaylog             • 1种实现:全程异步原 ...
原生 MySQL Replication 现状             • 3个线程:2 个 io 线程,1个 sql线程      实现机制   • 2种日志:binlog,relaylog             • 1种实现:全程异步原 ...
原生 MySQL Replication 现状             • 3个线程:2 个 io 线程,1个 sql线程      实现机制   • 2种日志:binlog,relaylog             • 1种实现:全程异步原 ...
现实场景对 Replication的需求现实需求             14
现实场景对 Replication的需求      无丢失现实需求             15
现实场景对 Replication的需求            • 日志:故障情况下不丢失日志内容      无丢失   • 数据:故障情况下不丢失数据现实需求              16
现实场景对 Replication的需求            • 日志:故障情况下不丢失日志内容      无丢失   • 数据:故障情况下不丢失数据      低延时现实需求              17
现实场景对 Replication的需求            • 日志:故障情况下不丢失日志内容      无丢失   • 数据:故障情况下不丢失数据            • 主从延时小:希望Master 与      低延时   Slav...
现实场景对 Replication的需求            • 日志:故障情况下不丢失日志内容      无丢失   • 数据:故障情况下不丢失数据            • 主从延时小:希望Master 与      低延时   Slav...
现实场景对 Replication的需求            • 日志:故障情况下不丢失日志内容      无丢失   • 数据:故障情况下不丢失数据            • 主从延时小:希望Master 与      低延时   Slav...
现实场景对 Replication的需求            • 日志:故障情况下不丢失日志内容      无丢失   • 数据:故障情况下不丢失数据            • 主从延时小:希望Master 与      低延时   Slav...
现实场景对 Replication的需求            • 日志:故障情况下不丢失日志内容      无丢失   • 数据:故障情况下不丢失数据            • 主从延时小:希望Master 与      低延时   Slav...
我们该如何对 Replication 进行扩展如何扩展           23
我们该如何对 Replication 进行扩展    自行解析如何扩展           24
我们该如何对 Replication 进行扩展           • 可行性:协议开源    自行解析   • 目的性:易于控制(分拆/合并/持久化…)           • 必要性:避免入侵原生代码,方便后续升级如何扩展         ...
我们该如何对 Replication 进行扩展           • 可行性:协议开源    自行解析   • 目的性:易于控制(分拆/合并/持久化…)           • 必要性:避免入侵原生代码,方便后续升级如何   中继缓冲扩展  ...
我们该如何对 Replication 进行扩展           • 可行性:协议开源    自行解析   • 目的性:易于控制(分拆/合并/持久化…)           • 必要性:避免入侵原生代码,方便后续升级如          • ...
我们该如何对 Replication 进行扩展           • 可行性:协议开源    自行解析   • 目的性:易于控制(分拆/合并/持久化…)           • 必要性:避免入侵原生代码,方便后续升级如          • ...
我们该如何对 Replication 进行扩展           • 可行性:协议开源    自行解析   • 目的性:易于控制(分拆/合并/持久化…)           • 必要性:避免入侵原生代码,方便后续升级如          • ...
复制扩展后架构示例示例扩展        30
复制扩展后架构示例    准实时数据分析示例扩展              31
复制扩展后架构示例                   • 实时反映数据变化至数据分析中心    准实时数据分析        • 合并多个数据源至单个目的数据库                   • 目标端可能不是 MySQL 数据库示例扩...
准实时数据分析系统架构示例              app1   …   app2        …   app3   …   app4   …App Cluster                                33
准实时数据分析系统架构示例              app1   …   app2        …   app3      …       app4   …App Cluster                         …     ...
准实时数据分析系统架构示例              app1   …     app2        …   app3      …       app4   …App Cluster                          …  ...
准实时数据分析系统架构示例              app1   …     app2        …   app3      …       app4   …App Cluster                          …  ...
准实时数据分析系统架构示例              app1     …     app2        …   app3      …       app4   …App Cluster                           ...
复制扩展后架构示例                   • 实时反映数据变化至数据分析中心    准实时数据分析        • 合并多个数据源至单个目的数据库                   • 目标端可能不是 MySQL 数据库示例扩...
高并发主读系统架构示例              app1   …   app2        …   app3   …   app4   …App Cluster                                39
高并发主读系统架构示例              app1   …   app2        …    app3        …   app4   …App Cluster                            write ...
高并发主读系统架构示例               app1      …    app2         …       app3     …   app4   …App Cluster                            ...
高并发主读系统架构示例                app1     …    app2         …       app3     …   app4   …App Cluster                            ...
高并发主读系统架构示例                app1     …    app2         …       app3     …   app4   …App Cluster                            ...
高并发主读系统架构示例                app1       …   app2        …       app3     …   app4   …App Cluster                            ...
互动环节      Q&Ahttp://isky000.com     Thanks!        45
Upcoming SlideShare
Loading in …5
×

基于MySQL开放复制协议的同步扩展

6,197 views

Published on

Published in: Technology, Health & Medicine
1 Comment
8 Likes
Statistics
Notes
  • mysql
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
6,197
On SlideShare
0
From Embeds
0
Number of Embeds
2,711
Actions
Shares
0
Downloads
147
Comments
1
Likes
8
Embeds 0
No embeds

No notes for slide

基于MySQL开放复制协议的同步扩展

  1. 1. 基于MySQL开放复制协议的数据同步 简朝阳 @mbaobao.com 2011.06.12 1
  2. 2. 基于MySQL开放复制协议的数据同步简朝阳(sky000)Oracle ACE (Expertise MySQL)技术保障部 @麦包包http://isky000.comhttp://twitter.com/sky000http://weibo.com/isky000 2
  3. 3. 基于MySQL开放复制协议的数据同步 原生现状介绍 主 题 纲 要 3
  4. 4. 基于MySQL开放复制协议的数据同步 原生现状介绍 现实业务需求 主 题 纲 要 4
  5. 5. 基于MySQL开放复制协议的数据同步 原生现状介绍 现实业务需求 主 题 纲 要 应该如何扩展 5
  6. 6. 基于MySQL开放复制协议的数据同步 原生现状介绍 现实业务需求 主 题 纲 要 应该如何扩展 架构示例展示 6
  7. 7. 原生 MySQL Replication 现状原生现状 7
  8. 8. 原生 MySQL Replication 现状 实现机制原生现状 8
  9. 9. 原生 MySQL Replication 现状 • 3个线程:2 个 io 线程,1个 sql线程 实现机制 • 2种日志:binlog,relaylog • 1种实现:全程异步原生现状 9
  10. 10. 原生 MySQL Replication 现状 • 3个线程:2 个 io 线程,1个 sql线程 实现机制 • 2种日志:binlog,relaylog • 1种实现:全程异步原生 优点现状 10
  11. 11. 原生 MySQL Replication 现状 • 3个线程:2 个 io 线程,1个 sql线程 实现机制 • 2种日志:binlog,relaylog • 1种实现:全程异步原 • 稳定可靠:已经历多年实践验证生 优点 • 代码集成:和 MySQL Server 绑定现 • 维护简单:配置简单,信息清晰状 • 能耗较低:单线程,Slave 端请求 11
  12. 12. 原生 MySQL Replication 现状 • 3个线程:2 个 io 线程,1个 sql线程 实现机制 • 2种日志:binlog,relaylog • 1种实现:全程异步原 • 稳定可靠:已经历多年实践验证生 优点 • 代码集成:和 MySQL Server 绑定现 • 维护简单:配置简单,信息清晰状 • 能耗较低:单线程,Slave 端请求 缺点 12
  13. 13. 原生 MySQL Replication 现状 • 3个线程:2 个 io 线程,1个 sql线程 实现机制 • 2种日志:binlog,relaylog • 1种实现:全程异步原 • 稳定可靠:已经历多年实践验证生 优点 • 代码集成:和 MySQL Server 绑定现 • 维护简单:配置简单,信息清晰状 • 能耗较低:单线程,Slave 端请求 • 数据可能丢失:异步机制无法保证安全 • 主从容易延时:单线程串行机制造成 缺点 • 1从只能1个主:避免可能的数据冲突? • Master切换难:日志ID不是全局唯一 13
  14. 14. 现实场景对 Replication的需求现实需求 14
  15. 15. 现实场景对 Replication的需求 无丢失现实需求 15
  16. 16. 现实场景对 Replication的需求 • 日志:故障情况下不丢失日志内容 无丢失 • 数据:故障情况下不丢失数据现实需求 16
  17. 17. 现实场景对 Replication的需求 • 日志:故障情况下不丢失日志内容 无丢失 • 数据:故障情况下不丢失数据 低延时现实需求 17
  18. 18. 现实场景对 Replication的需求 • 日志:故障情况下不丢失日志内容 无丢失 • 数据:故障情况下不丢失数据 • 主从延时小:希望Master 与 低延时 Slave 之间数据延时较小,更有效现 的提升扩展性实需求 18
  19. 19. 现实场景对 Replication的需求 • 日志:故障情况下不丢失日志内容 无丢失 • 数据:故障情况下不丢失数据 • 主从延时小:希望Master 与 低延时 Slave 之间数据延时较小,更有效现 的提升扩展性实需求 易切换 19
  20. 20. 现实场景对 Replication的需求 • 日志:故障情况下不丢失日志内容 无丢失 • 数据:故障情况下不丢失数据 • 主从延时小:希望Master 与 低延时 Slave 之间数据延时较小,更有效现 的提升扩展性实需 • 异常切换快:Slave能够在无人工求 易切换 干预的环境下快速更换 Master的, 并确保数据无丢失 20
  21. 21. 现实场景对 Replication的需求 • 日志:故障情况下不丢失日志内容 无丢失 • 数据:故障情况下不丢失数据 • 主从延时小:希望Master 与 低延时 Slave 之间数据延时较小,更有效现 的提升扩展性实需 • 异常切换快:Slave能够在无人工求 易切换 干预的环境下快速更换 Master的, 并确保数据无丢失 多个主 21
  22. 22. 现实场景对 Replication的需求 • 日志:故障情况下不丢失日志内容 无丢失 • 数据:故障情况下不丢失数据 • 主从延时小:希望Master 与 低延时 Slave 之间数据延时较小,更有效现 的提升扩展性实需 • 异常切换快:Slave能够在无人工求 易切换 干预的环境下快速更换 Master的, 并确保数据无丢失 • 多主复制:能够让1个 Slave 从多 多个主 个 Master 复制数据,实现数据合并 22
  23. 23. 我们该如何对 Replication 进行扩展如何扩展 23
  24. 24. 我们该如何对 Replication 进行扩展 自行解析如何扩展 24
  25. 25. 我们该如何对 Replication 进行扩展 • 可行性:协议开源 自行解析 • 目的性:易于控制(分拆/合并/持久化…) • 必要性:避免入侵原生代码,方便后续升级如何扩展 25
  26. 26. 我们该如何对 Replication 进行扩展 • 可行性:协议开源 自行解析 • 目的性:易于控制(分拆/合并/持久化…) • 必要性:避免入侵原生代码,方便后续升级如何 中继缓冲扩展 26
  27. 27. 我们该如何对 Replication 进行扩展 • 可行性:协议开源 自行解析 • 目的性:易于控制(分拆/合并/持久化…) • 必要性:避免入侵原生代码,方便后续升级如 • 易控制:合并,分拆,转发…何 中继缓冲 • 降低能耗:一个请求多个解析,解放主节点扩 • 持久化:集中处理变更(备份/转发…)展 • 易切换:日志不丢失,可全局控制 27
  28. 28. 我们该如何对 Replication 进行扩展 • 可行性:协议开源 自行解析 • 目的性:易于控制(分拆/合并/持久化…) • 必要性:避免入侵原生代码,方便后续升级如 • 易控制:合并,分拆,转发…何 中继缓冲 • 降低能耗:一个请求多个解析,解放主节点扩 • 持久化:集中处理变更(备份/转发…)展 • 易切换:日志不丢失,可全局控制 并行加载 28
  29. 29. 我们该如何对 Replication 进行扩展 • 可行性:协议开源 自行解析 • 目的性:易于控制(分拆/合并/持久化…) • 必要性:避免入侵原生代码,方便后续升级如 • 易控制:合并,分拆,转发…何 中继缓冲 • 降低能耗:一个请求多个解析,解放主节点扩 • 持久化:集中处理变更(备份/转发…)展 • 易切换:日志不丢失,可全局控制 并行加载 • 高性能:多线程提高处理能力 • 低延时:避免大事务阻塞问题 • 易排错:一个错误不影响整体复制进度 29
  30. 30. 复制扩展后架构示例示例扩展 30
  31. 31. 复制扩展后架构示例 准实时数据分析示例扩展 31
  32. 32. 复制扩展后架构示例 • 实时反映数据变化至数据分析中心 准实时数据分析 • 合并多个数据源至单个目的数据库 • 目标端可能不是 MySQL 数据库示例扩展 32
  33. 33. 准实时数据分析系统架构示例 app1 … app2 … app3 … app4 …App Cluster 33
  34. 34. 准实时数据分析系统架构示例 app1 … app2 … app3 … app4 …App Cluster … … … DB Cluster db1 db2 db3 34
  35. 35. 准实时数据分析系统架构示例 app1 … app2 … app3 … app4 …App Cluster … … … DB Cluster db1 db2 db3 凌晨低峰时期提取数据 昨日数据 报表 Data Analyze Center 35
  36. 36. 准实时数据分析系统架构示例 app1 … app2 … app3 … app4 …App Cluster … … … DB Cluster db1 db2 db3 Data Analyze Center 36
  37. 37. 准实时数据分析系统架构示例 app1 … app2 … app3 … app4 …App Cluster … … … DB Cluster db1 db2 db3 BinlogSyncer 实时分析 报表 Data Analyze Center 37
  38. 38. 复制扩展后架构示例 • 实时反映数据变化至数据分析中心 准实时数据分析 • 合并多个数据源至单个目的数据库 • 目标端可能不是 MySQL 数据库示例扩展 • 写入量相对较少,数据相对静止 高并发主读应用 • 读取请求特别多,并发量很高 38
  39. 39. 高并发主读系统架构示例 app1 … app2 … app3 … app4 …App Cluster 39
  40. 40. 高并发主读系统架构示例 app1 … app2 … app3 … app4 …App Cluster write Master (all data) 40
  41. 41. 高并发主读系统架构示例 app1 … app2 … app3 … app4 …App Cluster write Master (all data) 同步所有日志 db1 db2 db3 db… Read DB Cluster : each db with part of all data 41
  42. 42. 高并发主读系统架构示例 app1 … app2 … app3 … app4 …App Cluster write Master (all data) read read 同步所有日志 db1 db2 db3 db… Read DB Cluster : each db with part of all data 42
  43. 43. 高并发主读系统架构示例 app1 … app2 … app3 … app4 …App Cluster write Master (all data) read read db1 db2 db3 db… Read DB Cluster : each db with part of all data 43
  44. 44. 高并发主读系统架构示例 app1 … app2 … app3 … app4 …App Cluster write Master (all data) read read BinlogSyncer db1 db2 db3 db… Read DB Cluster : each db with part of all data 44
  45. 45. 互动环节 Q&Ahttp://isky000.com Thanks! 45

×