`
丁林.tb
  • 浏览: 797046 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Transfer2.0 发布啦~

阅读更多

背景

       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里面的[mysqld]下新增如下几行配置:

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

 

 建议修改Slave上的配置(非必需)

  net_read_timeout=3600

  max_allowed_packet=1073741824

c)      将Slave中需要同步的表结构,导入到Transfer中。注意,只需要表结构,不需要数据。
       其中remote_slave系列配置的是一个有super权限访问Slave的帐号。
      重启即可。

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

 

系统限制

        1、Master上binlog格式必须是row based

        2、每个表必须要有主键(显示的primay key)

Transfer变身Slave

       有的同学说我不想维护多一个实例。其实就so easy,只要把trasnfer的目标指向自己即可。
为了安全起见,配置规则必须是
remote_slave_hostname配置为127.0.0.1 且 remote_slave_port与Transfer端口相同。

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

 

分享到:
评论
8 楼 aeoluspu 2013-05-14  
patch 开源了吗 ? 如果我们想把patch 打到 mysql 5.4 版本中,怎么打?
7 楼 丁林.tb 2012-12-11  
forward51 写道
5.5.18版本
配置如下:
relay-log =/usr/local/mysql5.5/log/%d/mysqld-relay-bin
relay-log-index =/usr/local/mysql5.5/log/%d/mysqld-relay-bin.index
master-info-file =/usr/local/mysql5.5/log/master.info
relay-log-info-file =/usr/local/mysql5.5/log/%d/relay-log.info

change master时出下面的错误(log下 16个数字命名的目录是建好的,权限也有):
ERROR 29 (HY000): File '/usr/local/mysql5.5/log/%d/mysqld-relay-bin.index' not found (Errcode: 2)

另外5.5.18 不支持 stop_slave_on_error = 1 了吗?


Transfer2以后不需要配置relay-log这些参数了,配置作了简化
参见此篇 http://dinglin.iteye.com/blog/1746185

若有问题,请联系我 新浪微博  @淘宝丁奇
6 楼 丁林.tb 2012-12-11  
wyjs 写道
今天发现在Error_log中会报如下错误:
[ERROR] /home/dingqi.lxb/transfer2/taobaomysql/Percona-Server-5.5.18/sql/slave.cc:2399 error event

你好,这个是可以忽略的调试信息。请换用我刚刚发布的新版本 http://dinglin.iteye.com/blog/1746185
若有问题,请联系我 新浪微博  @淘宝丁奇
5 楼 forward51 2012-12-10  
5.5.18版本
配置如下:
relay-log =/usr/local/mysql5.5/log/%d/mysqld-relay-bin
relay-log-index =/usr/local/mysql5.5/log/%d/mysqld-relay-bin.index
master-info-file =/usr/local/mysql5.5/log/master.info
relay-log-info-file =/usr/local/mysql5.5/log/%d/relay-log.info

change master时出下面的错误(log下 16个数字命名的目录是建好的,权限也有):
ERROR 29 (HY000): File '/usr/local/mysql5.5/log/%d/mysqld-relay-bin.index' not found (Errcode: 2)

另外5.5.18 不支持 stop_slave_on_error = 1 了吗?
4 楼 wyjs 2012-12-05  
今天发现在Error_log中会报如下错误:
[ERROR] /home/dingqi.lxb/transfer2/taobaomysql/Percona-Server-5.5.18/sql/slave.cc:2399 error event
3 楼 wyjs 2012-12-04  
呵呵。。谢谢你的回复,我在你的其它的blog中找到了transfer_slave_thread 这个参数。最近试验了一下,发现在使用mysql-transfer后如果在主库中新建数据库则会造成mysql-transfer的SQL Thread停止。不知道是不是我配置的问题。
2 楼 丁林.tb 2012-11-29  
wyjs 写道
非常感谢可以提供这么好的工具,不过我还有一个疑问,想请教一下,我怎么确定TransFer所启动的线程数呢?

启动的线程数肯定是从my.cnf里面取到的,比如配置16就是16。
不过你提的这个问题很好,后续我加到mysql的show variables 的返回结果里面,更友好一些。谢谢
1 楼 wyjs 2012-11-29  
非常感谢可以提供这么好的工具,不过我还有一个疑问,想请教一下,我怎么确定TransFer所启动的线程数呢?

相关推荐

    USB 2.0协议规范

    USB 2.0规范中定义了四种数据传输模式:批量传输(Bulk Transfer)、同步传输(Isochronous Transfer)、中断传输(Interrupt Transfer)以及控制传输(Control Transfer)。每种传输模式都有其特定用途,其中,控制...

    http2.0 RFC文档

    工作组定期发布Internet-Drafts,即互联网草案,这些文档是工作组工作的初始版本,用于在广泛社区中进行讨论和收集反馈。RFC文档是互联网草案的最终状态之一,通常表示其内容已经得到了广泛认可并准备实施。Internet...

    usb2.0协议规范

    这个协议在2000年发布,极大地提高了USB的数据传输速度,使其成为连接外部设备的首选接口。在深入理解USB 2.0协议规范后,配合Linux驱动的熟悉,对于任何IT专业人员来说,都能显著提升其技能水平,并为找到高薪工作...

    usb hub 2.0 的实现

    USB Hub 2.0是USB规范的一个版本,它在1998年发布,相较于早期的USB 1.1,提供了更高的数据传输速率,达到了480 Mbps(兆比特每秒),被称为全速(Full Speed)模式。 在USB Hub 2.0的设计和实现过程中,主要涉及...

    USB2.0中文文档

    USB2.0在1998年发布,相较于USB1.1,其最大传输速度得到了显著提升,达到了480Mbps(60MB/s),这被称为“高速”模式。这一提升使得大容量存储设备如外部硬盘和闪存驱动器的数据传输变得快速而高效。此外,USB2.0还...

    wap2.0 白皮书

    - WAP 2.0新增了对IP(Internet Protocol)、TCP(Transmission Control Protocol)和HTTP(HyperText Transfer Protocol)等标准互联网协议的支持。 - 这些协议的加入使WAP 2.0能够更好地利用现有的互联网技术,...

    基于REST的webservice规范2.0版本

    根据所提供的部分内容,可以看出该文档为JAX-RS 2.0版本的公共评审版,发布时间为2012年9月26日。文档由Santiago Pericas-Geertsen和Marek Potociar共同编辑,发布方为Oracle Corporation。该文档明确指出其版权归属...

    USB 2.0 协议部分 中文文档

    USB 2.0协议是通用串行总线(Universal Serial Bus)的一个版本,它在2000年发布,极大地提升了数据传输速度和设备连接的便捷性。USB 2.0标准的出现是为了应对日益增长的数据传输需求,尤其是在外设如打印机、扫描仪...

    EZ-FTP 2.0 Beta.zip

    EZ-FTP 2.0 Beta 的发布旨在提供一个更易于管理和配置的FTP服务器环境,尤其适合初学者和中小型企业。 FTP服务器软件的核心功能包括创建用户账户、设定权限、管理目录结构以及监控服务器活动。EZ-FTP 2.0 Beta 提供...

    USB2.0规范文档

    USB 2.0,全称为Universal Serial Bus 2.0,是USB接口标准的一个版本,于1999年发布,极大地提升了数据传输速度和设备兼容性,是电子设备间连接的重要桥梁。USB 2.0规范是USB开发者的权威指南,详细定义了USB的物理...

    PCI_Express_Base_Rev_2.0.pdf

    2.0是PCIe规范的一个重要版本,于2007年发布。相比于1.0版,它的主要改进在于数据传输速率的提升,每个Lane的单向数据速率从2.5 Gbps提高到5 Gbps,这意味着x1 Lane的双向带宽从2.5 Gbps提高到5 Gbps,x16 Lane的...

    USB2.0协议规范

    高速模式下,USB 2.0支持批量传输(Bulk Transfer)和中断传输(Interrupt Transfer)。批量传输用于大量数据的非实时传输,如文件传输;中断传输则用于实时数据传输,如鼠标和键盘输入。 10. **同步传输与控制...

    javapetstore-2.0-ea5

    这个版本可能是EA5(Early Access 5),意味着它是在正式发布前的一个预览或测试版本,可能存在不稳定因素。 2. **Java EE组件**: - **JSP(JavaServer Pages)**:用于创建动态网页,将业务逻辑与表现层分离。 ...

    USB2.0协议文件

    USB2.0协议是通用串行总线(Universal Serial Bus)的一个版本,它在2000年发布,显著提高了数据传输速率,从USB1.1的12Mbps提升到480Mbps,称为“高速”模式。这个协议是USB驱动开发的基础,理解其工作原理对于开发...

    usb 2.0 英文协议

    USB 2.0,全称为Universal Serial Bus 2.0,是USB接口标准的一个重要版本,于2000年4月发布。这个规范在USB 1.1的基础上进行了重大改进,显著提升了数据传输速率,从USB 1.1的12Mbps(megabits per second,每秒百万...

    usb1.1 and usb2.0的协议

    USB 1.1 规范于1996年发布,定义了两种传输速率: 1. **低速(Low Speed)**:最大数据传输速率为1.5 Mbps(约192 KB/s),适用于简单设备如鼠标。 2. **全速(Full Speed)**:最大数据传输速率为12 Mbps(约1.5 MB...

    USB2.0中文协议

    USB2.0在1998年发布,是对USB1.1规范的重大升级。USB1.1的最大数据传输速率为12Mbps(兆比特每秒),而USB2.0则将这个速度提升到480Mbps,这被称为“高速”模式。这一改进极大地提高了数据传输效率,使得USB2.0成为...

    USB 2.0 中英文协议

    USB 2.0是通用串行总线(Universal Serial Bus)的一个版本,它在1998年发布,显著提高了数据传输速率,为个人计算机和其他电子设备之间提供了更高效的数据交换方式。USB 2.0协议是USB技术的核心,定义了物理层、...

    Ruby on Rails 2.0的新特性介绍

    Ruby on Rails 2.0 是这个流行的Web开发框架的一个重大更新,发布于2007年底。Rails以其快速的版本迭代和创新的功能而闻名,从1.0到2.0的升级也不例外。这次更新带来了许多新特性,提升了开发效率和用户体验。 首先...

    Professional Web 2.0 Programming.pdf

    - **RSS (Really Simple Syndication)**:用于发布、聚合新闻和其他类型内容的格式标准,使得用户能够方便地获取最新信息。 - **REST (Representational State Transfer)**:一种用于设计网络应用程序的架构风格,...

Global site tag (gtag.js) - Google Analytics