Presentation is loading. Please wait.

Presentation is loading. Please wait.

翟卫祥(花名:印风) 阿里巴巴数据库工程师 博客:http://mysqllover.com/ 2013/7/13

Similar presentations


Presentation on theme: "翟卫祥(花名:印风) 阿里巴巴数据库工程师 博客:http://mysqllover.com/ 2013/7/13"— Presentation transcript:

1 翟卫祥(花名:印风) 阿里巴巴数据库工程师 博客:http://mysqllover.com/ 2013/7/13
MySQL 复制优化 翟卫祥(花名:印风) 阿里巴巴数据库工程师 博客: 2013/7/13

2 提纲 备库预热工具relayfetch AliMySQL特性之并行复制
AliMySQL特性之并行复制 正在准备开源

3 MySQL复制原理 性能问题困扰社区多年

4 问题描述 备库单个sql线程 P.K. 主库多线程 备库SQL线程是 I/O-bound,但具有大量的空闲I/O Capability

5 Relayfetch 思路 基本思路:在备库sql线程执行更新之前,预先将相应的数据加载到内存中 Read and excute query
1.解析event 2.提取pk/uk,转换为“select” 3.放入队列中 队列1 Worker thread 1 队列2 Worker thread2 Read thread 队列3 Worker thread3 …… file 队列N Worker thread N 读本地relay-log文件

6 特点 支持ROW模式(区别于社区已有工具) 当延迟在一定范围内(默认1s,可配置)时,read线程在sleep状态,避免影响正常的备库读
限制读relaylog速度,避免过快 在备库执行无风险SQL,影响很小 由于对备库影响不大,对那些常发生延迟的库,可以作为标配长期运行

7 测试结果(1) buffer pool: 250M (250M/4.7G = 5%)

8 测试结果(2) buffer pool:1G(1G/4.7G = 20%

9 对于热点数据集大部分都在buffer pool的场景,relayfetch无能为力

10 MySQL并行复制 社区的解决办法 并行复制原理 运行情况

11 社区的解决办法 Tungsten replication 5.6 replication 没有集团适合的解决办法

12 并行复制原理1 优化冲突检测的策略,增加预读等优化 修复mysql 自带的测试集合失败的testcase

13 并行复制原理1 针对tcmain冲突频繁的场景,继续优化冲突检查策略

14 并行复制原理2

15 并行复制原理2 一个表只绑定到一个SQL线程上,但一个SQL线程可能处理多个表 一个事务中涉及到的表,保证绑定到同一个SQL线程

16 特点 支持按事务/库/表级别并发(不破坏事务性),参数动态控制 支持动态切换原生/并行复制
START MULTI_SLAVE vs START SLAVE 只支持ROW模式的并发,STATEMENT模式退化成串行

17 已经合并到内部AliMySQL版本中,正在准备开源,敬请期待

18 Q & A


Download ppt "翟卫祥(花名:印风) 阿里巴巴数据库工程师 博客:http://mysqllover.com/ 2013/7/13"

Similar presentations


Ads by Google