mysql
丁奇的MySQL讲堂
丁奇个人简介

姓名:林晓斌 (花名丁奇)
职务:阿里巴巴核心系统数据库组技术专家
背景:活跃的MySQL社区贡献者。专注于数据存储系统、MySQL源码研究和改进、MySQL性能优化和功能改进。
MySQL与CPU-淘宝丁奇
下载
MySQL源码&策略

专家丁奇重磅推荐

MySQL性能调优最佳实践
专家推荐《ORACLE MYSQL数据库模式设计》图例丰富,对索引和列设计的覆盖较全面。系列话题的后续部分值得关注。
专家推荐《MySQL优化》 这是一个以解决问题为目的的思考路线总结。有方法、有工具、有思路、有细节。
专家推荐《MySQL之配置参数优化》 配置的值可以讨论,但列出来这些参数都应该在上线之前被考量。
MySQL性能调优最佳实践
专家推荐《MySQL性能调优最佳实践》问题典型细致,引发思考。当然优化配置都与场景有关,即使不是通用的结论,这些点也够在设计之初一一列出来思考。
淘宝商品库MySQL优化实践
专家推荐《淘宝商品库MySQL优化实践》从MySQL、FS、OS、RAID到硬件层的层层调优,关注性能、安全性运维等众多因素。
MySQL性能调优与架构设计
专家推荐《MySQL性能调优与架构设计》手册之外的另外一本很好的入门书籍。
专家推荐《Mysql Innodb Insert Buffer/Checkpoint/Aio实现分析》推荐对MySQL源码有兴趣的同学细读,或学习或复习都很不错。
专家推荐《MySQL线上常见故障剖析》线上实战和各种坑的解释和解决,推荐给DBA同学。
专家推荐《2011架构师大会:淘宝Java中间件之路》中间件是db的客户端,也是app的服务端,用中间件弥补目前MySQL在集群上的缺陷。
专家推荐《理解MySQL——索引与优化 》看这图例你会以为这是一个优秀的文章,细看以后会发现果然很优秀。解释得很详细。


















MySQL 主从系列篇

这个系列是专门调研MySQL主从同步延迟并改进,最终实现的MySQL-Transfer已经能实现线上无延迟同步。目前正在开发Transfer 2.0,进一步简化运维、提升同步性能和减少当前版本的限制,如支持事务、单表并发等。

MySQL多线程同步MySQL-Transfer介绍

MySQL多线程同步MySQL-Transfer介绍

MySQL-Transefer(下称Transfer)是一个基于MySQL+patch后得到的主从同步工具。 其主要目的是为了解决原生版本的主从同步里,从库是单线程apply主库的binlog,导致的延迟。 最近完成测试的版本将multi-master合并到Transfer中并针对支付宝的应用需求做了定制性能改进。 这里做一个已经完成的完整功能介绍。

1、Transfer可以注册成多个Master的从库

2、Transfer接收多个Master传入的binlog后将更新执行到Slave上

3、Transfer本地没有数据

如果你没有多主的需求,那结构就是Master -> Transfer -> Slave.由于Transfer是在MySQL基础上打的patch,因此支持几乎所有MySQL的监控命令,你原来加在Slave上的监控,可以直接改到Transfer上。

一般我们将Transfer和Slave放在同一个机器上(等于是装两个MySQL,一个是Transfer,一个是真正的slave) 

一种MySQL主从同步加速方案

一种MySQL主从同步加速方案

1、作为这个关键的转发工具transfer,需要提供如下功能:

1、能够指定同步master中的哪部分数据,并且能够方便地修改这个配置以应对master的加表需求;

2、支持stop slave、start slave。支持快速切换到新主库的change master命令。

3、能够记录读取点,transfer自己重启或master重启后能够按照记录点继续读后面的binlog;

4、能够记录分发点,transfer自己重启或slave重启后能够按照记录点继续同步给slave

Transfer的这么多功能,自己造轮子就累了。这里直接用MySQL来充当此角色。Transfer更新slave在功能上可以使用federated引擎,但由于其纠结的实现导致性能上达不到要求,因此在MySQL框架层中作了一点修改――读到同步日志后,直接发送给slave。

功能比较齐全。直接使用MySQL,原有的管理功能基本都能用,主库从库重启/换库的代价比较小。

一种MySQL主从同步加速方案改进

一种MySQL主从同步加速方案改进

1、为什么不直接把transfer当slave用?

实际上是可以的,作了简单实验发现与“改进方案”的从库QPS相同,好处是减少了一层transfer的逻辑。一般来说这种

工具也不会放到和slave一个机器,直接用作slave就少了一个机器。 不过直接改slave的代码还是推广比较麻烦。而且不

得不承认的是,这个方案存在一个硬伤:跨表更新的语句顺序无法严格保证。――这也是这两个方案的应用前提:没有跨

表语句或者对这种出现的情况要求不严格。

2、为什么不直接写一个工具而用MySQL?

其实作transfer的MySQL并不像想象的那么庞大。不需要的引擎可以都不编译进去,其实只需要框架层的逻辑和一个myisa

m引擎即可。而它提供了很多管理命令,比如一个现成的客户端,能够方便的stop slave、change master,能够用show

slave status看同步状态。这些作为这个工具的基本功能,自己一个个实现重复轮子太多了。

MySQL主从同步相关-主从多久的延迟?

XNA与Silverlight集成

这次单独调查一下主从延迟的时间。这里说的主从延迟,并不是指“从库更新

性能跟不上主库”, 而是“一个命令从主库更新完成到从库更新完成的延迟

时间。 对于每一个连上来的从库,主库都有一个client线程与之对应。 先看

主从的基本数据流

1、客户端SQL更新命令

2、主库执行

3、主库写binlog

4、主库client线程读binlog发送给从库的io线程

5、从库io线程写盘(relay-log)

6、从库sql线程读relay-log

7、执行更新。

将本页内容分享给你的朋友

更多
微博秀