技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统架构 --> Transfer 2.0 介绍

Transfer 2.0 介绍

浏览:1886次  出处信息

           Transfer是一个主从多线程同步工具,直接patch在MySQL中。2011年开发完成。于去年的12.12上线,并撑住高峰期主从,保证从库无延迟,使得应用能够直接从从库上读数据。

           对Transfer1.0背景有兴趣的同学可以看我以前的一篇博客

    新功能

           Transfer第一版本存在两个可改进的点:单表并发和事务支持。

    a)      Transfer2.0支持单表并发,基本原理就是按照更新行的主键id (因此有一个限制是同步的表必须要有主键)。

    b)      Transfer2.0支持slave回放主库事务时以事务为单位执行。

    

     内部基本结构

    Transfer1.0

    

    为什么不直接写到slave里面?由于DBA同学觉得直接写在slave里面担心数据安全性,因此改造成第一个第三方工具。

    Transfer2.0

    

           外部主库和备库的行为相同,Trasnfer内部改为

    性能效果

           上周五在一个紧急项目中由于其他方案出问题,上线测试,从库tps性能从300+提升到2000+。

    安装配置

           Transfer的推荐配置结构是

          Master  ==> Transfer ==> Slave

           假设你已经有Master和Slave,Transfer建议部署在slave同一个机器,当时我们上线是这么配置的,当然如果你机器多,也可以考虑放在单独一个机器,只是不必要。

           Transfer的安装步骤:

    a)    附件中三个mysqld,分别是官方版本mysql-5.1.48, percona 版本5.5.18和淘宝MySQL分支5.5.18打入patch后生成的三个bin文件。

       需要你先安装你选择的对应的官方版本,然后替换mysqld。

    b)   My.cnf里面新增如下几行配置:

    remote_slave_hostname = 127.0.0.1

     remote_slave_username = root

     remote_slave_password =

     remote_slave_port = 3306

     transfer_slave_thread = 16

     slave_skip_errors=1062,1032

    c)      将Slave中需要同步的表结构,导入到Transfer中。注意,只需要表结构,不需要数据。

            其中remote_slave系列配置的是一个有super权限访问Slave的帐号。

           重启即可。

    在Transfer中的操作与在Slave中原本的操作相同,只是现在的关系是,Transfer注册为Master的主库,得到操作步骤后,更新Slave.

    Transfer变身Slave

           有的同学说我不想维护多一个实例。其实就so easy,只要把trasnfer的目标指向自己即可。

     为了安全起见,配置规则必须是

     remote_slave_hostname配置为127.0.0.1 且 remote_slave_port与Transfer端口相同。

     当然,如果Transfer自己是slave,配置时还少了一步拷贝表结构

    三个可执行文件下载地址

建议继续学习:

  1. MySQL多线程同步MySQL-Transfer介绍    (阅读:2449)
  2. Transfer在MySQL数据库双主同步架构中的应用    (阅读:2366)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1