求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
MySQL多线程同步MySQL-Transfer介绍
 

发布于2013-5-9

 

一、关于Transfer

MySQL-Transefer(下称Transfer)是一个基于MySQL+patch后得到的主从同步工具。

其主要目的是为了解决原生版本的主从同步里,从库是单线程apply主库的binlog,导致的延迟。

最近完成测试的版本将multi-master (by P.Linux)合并到Transfer中并针对支付宝的应用需求做了定制性能改进。

这里做一个已经完成的完整功能介绍。

二、总体结构

说明:

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

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

3、Transfer本地没有数据

如果你没有多主的需求,那结构就是Master -> Transfer -> Slave.

三、内部结构

既然是单线程造成的主从延迟,提升就需要用多线程来实现。我们来看单主情况下的内部实现。

说明:左上角是Master, 右上角是Transfer,下面是Slave。

四、增加参数及对应说明

在my.cnf中新增如下几个参数:

remote_slave_hostname = Ip of Slave

remote_slave_username = root

remote_slave_password = root

remote_slave_port = Port of Slave

stop_slave_on_error = 1

remote_table_maps_file = ./table_maps

transfer_slave_thread = 10

说明:

1、 前四个是目标slave库的认证信息

2、 Stop_slave_on_error 一般建议配置为1,表示只要有一个线程执行出错,所有slave_io_thread都停止

3、 remote_table_maps_file路径指向本地文件,文件中每行格式为 “表1 表2”,表示在Transfer做同步时,将Master上所有对表1的操作都更新到表2.

4、 transfer_slave_thread是一个只读参数,控制Transfer有多少个线程做并发更新(若为1则表示串行更新,性能与官方版本相同)。一般建议配置为系统核数2倍。

五、一些说明

1、由于Transfer是在MySQL基础上打的patch,因此支持几乎所有MySQL的监控命令,你原来加在Slave上的监控,可以直接改到Transfer上。

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

3、 Transfer按照表名hash将不同表的更新分配到不同的线程,因此在多表环境下才能看得到性能提升

4、 Master的binlog格式必须设置成row

5、 若需要用到多个Master,给每个Master命令一个channel,命令序列为 change master channel1 to master_log_file=xxx…… ; start slave channel1; 可以单独对一个chanel执行start\stop等命令

6、 若只需要一个master,则语法格式不变

六、性能效果

测试场景如下,在Master上的16个表并发分别插入10w行。期间先停止同步。插入完成后,再分别测试直接用原生版本主从和Transfer的性能。

主库插入耗时66.1s 。

 

耗时

平均tps

MySQL主从

363s

4402/s

Transfer同步

66s

24242/s

七、Patch应用

下载地址。 基于5.1.48, patch –p0 < transfer_mysql.diff. 后续安装步骤与原生MySQL相同.示例my.cnf 从此下载,记得修改程序安装目录。

相关文章 相关文档 相关视频



我们该如何设计数据库
数据库设计经验谈
数据库设计过程
数据库编程总结
数据库性能调优技巧
数据库性能调整
数据库性能优化讲座
数据库系统性能调优系列
高性能数据库设计与优化
高级数据库架构师
数据仓库和数据挖掘技术
Hadoop原理、部署与性能调优
 
分享到
 
 


MySQL索引背后的数据结构
MySQL性能调优与架构设计
SQL Server数据库备份与恢复
让数据库飞起来 10大DB2优化
oracle的临时表空间写满磁盘
数据库的跨平台设计
更多...   


并发、大容量、高性能数据库
高级数据库架构设计师
Hadoop原理与实践
Oracle 数据仓库
数据仓库和数据挖掘
Oracle数据库开发与管理


GE 区块链技术与实现培训
航天科工某子公司 Nodejs高级应用开发
中盛益华 卓越管理者必须具备的五项能力
某信息技术公司 Python培训
某博彩IT系统厂商 易用性测试与评估
中国邮储银行 测试成熟度模型集成(TMMI)
中物院 产品经理与产品管理
更多...