MySQL 主从原理、问题、解决方案和应用——丁奇

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. MySQL主从同步 --原理、问题、解决方案和应用 @淘宝丁奇 2009-8-22
2. 一.MySQL主从同步基本流程 二.延迟的原因 三.解决方案一 四.解决方案二 --Transfer 五.应用场景和业务限制 六.保障和退化 七.在多主同步的应用 八.不能解决的光速问题 九.不能解决的更新延迟
3. MySQL主从同步基本流程 Master Slave
4. MySQL主从同步延迟原因 什么是延迟--2和6的时间间隔 1 为什么延迟 2、5的文件更新通知?不是 2 3的网络延迟? 不是 4的写盘延迟? 不是 3 5 6 4 等等。。。1和2之间那个箭头怎么不画出来--我们不关心
5. MySQL主从同步延迟原因 延迟原因 主库更新多线程 从库更新单线程 都是箭头,你咋这么苗条呢?
6. MySQL主从同步解决方案 解决方案: 从库变成多线程更新 反问一句: 三秒钟变格格么。有那么好 MySQL为什么不支持? 说胖就胖了啊。。。
7. MySQL主从同步解决方案 直接多线程存在的问题: 语句顺序无法保证--insert和 update调换有什么问题? 又瘦回去了,怂了。。。
8. MySQL主从同步解决方案 咔~ 导演说咔了吗? 其实我准备变身, 左上角的兄弟, 后面好像都没你的戏份了, 能不能先洗洗睡去?
9. MySQL主从同步解决方案 解决方案分析: 1、一定要多线程!为什么? 2、多线程又会打乱顺序 3、总是有些没那么严格的,是吧? 4、同一个表的更新必须按照顺序 5、不同表呢? 6、先作个不同表之间并行的,线上一个库都有很多表 过渡太久了吧,变身的那位呢?
10. MySQL主从同步解决方案 Slave 认不出来了,来个对比照
11. MySQL主从同步解决方案 应该是解决了 从此Master和Slave过着幸福的生活? 太naï ve了。。。 实际上,刚才那个是副导演 导演回来了,说: 咱这剧本不允许主角变身! 未完待续
12. MySQL主从同步解决方案 方案考虑: 多线程是ok的 但是不能修改线上的代码 就是Master和Slave都不能动 变回来了,导演管饭,听导演的
13. MySQL主从同步解决方案 某路人 。。。肿么这么眼熟
14. MySQL主从同步解决方案
15. MySQL主从同步解决方案 以上为前传,介绍MySQL多线程同步工具(Transfer)的设计思路 以下为文字解释版 1. MySQL的主从同步延迟,是指从库的更新性能低于主库的更新 性能。 2. 相同的机器配置,出现性能差异的原因,是从库上单线程更新。
16. MySQL主从同步解决方案 3. 一种方案是将从库的单线程apply改成多线程,但需要修改slave 的代码。 4. 安全起见,以工具的形式提供多线程同步功能。 5. Transfer也是一个MySQL,DBA一般部署在slave同一个机器上
17. 一.MySQL主从同步基本流程 二.延迟的原因 三.解决方案一 四.解决方案二 --Transfer 五.应用场景和业务限制 六.保障和退化 七.在多主同步的应用 八.不能解决的光速问题 九.不能解决的更新延迟
18. Transfer的应用场景和业务限制 1. 多表业务  Transfer的策略是在io_thread接收主库日志后,分成16份不同的 relay-log存放  再用16个sql_thread分别读取日志分发  确保同一个表的更新语句顺序与主库binlog相同 2. 对Master的限制  主库设置binlog为row模式 (不支持Statement的原因)  主库单个语句的binlog不能超过1G (原因说明)  尽量减少一个语句更新两个表
19. Transfer的应用场景和业务限制 3. 对Slave的限制  设置max_allowed_packet = 1G  需要一个root权限账号提供给Transfer 4. 对DDL语句的处理  0号线程的作用
20. Transfer的保障和退化 1. 保障  Transfer本身挂了数据不丢(持久化的数据队列)  Slave出错重启后,继续同步直接start slave  Master重启后自动重新同步  维护方便。 • stop slave; change master; slave_skip_errors • 直接接入现成监控系统 2. 退化  Statement模式下某些语句不支持。 支持的语句性能也不提升  事务打散  从库上不再支持rollback (什么时候从库会收到rollback?)
21. 效果对比 原始性能 Transfer方案性能
22. 一.MySQL主从同步基本流程 二.延迟的原因 三.解决方案一 四.解决方案二 --Transfer 五.应用场景和业务限制 六.保障和退化 七.在多主同步的应用 八.不能解决的光速问题 九.不能解决的更新延迟
23. Transfer在多主同步的应用 多主复制的需求来源  备份节约机器  数据聚集分析 理想方案 MySQL不支持
24. Transfer在多主同步的应用 现在方案  浪费硬盘空间  增加额外更新  更大的延迟
25. Transfer在多主同步的应用 Transfer方案
26. 一.MySQL主从同步基本流程 二.延迟的原因 三.解决方案一 四.解决方案二 --Transfer 五.应用场景和业务限制 六.保障和退化 七.在多主同步的应用 八.不能解决的光速问题 九.不能解决的更新延迟
27. 无法解决的光速问题 抽象回简单场景,在解决cpu利用问 题后,从库更新性能与主库相同 新问题:跨机房单个数据延迟 杭州到青岛线路就是那么长 20ms
28. 无法解决的光速问题 回到最开始的一个问题 1 什么是延迟 2 3 5 4 6
29. 无法解决的光速问题 如果我们把延迟定义为 3到6的时间差呢? 1 让用户多等20ms 换取数据一致性 一起来讨论 2 3 5 4 6
30. 一.MySQL主从同步基本流程 二.延迟的原因 三.解决方案一 四.解决方案二 --Transfer 五.应用场景和业务限制 六.保障和退化 七.在多主同步的应用 八.不能解决的光速问题 九.不能解决的更新延迟
31. 不能解决的更新延迟 这回我们关注6本身, 要求 完全没有延迟怎么作? 一个耗时10ms的更 新,至少延迟10ms 1 全同步?--no 2 不要陷入锤子钉子的误区 3 5 4 放弃这方案,用双写 6
32. 谢谢

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-13 04:10
浙ICP备14020137号-1 $Carte des visiteurs$