您好,欢迎访问一九零五行业门户网

MySQL主从同步加速 Transfer-- FAQ

q: transfer是什么 a: 是一个解决mysql原生主从同步延迟的方案。 transfer本身是一个在mysql源码上打的patch,可以用于当slave,也可以用于当第三方工具,将master的数据同步发给slave。 利用多线程实现主从无延迟。 q: transfer目前的发布形式? a: transfer
q: transfer是什么
a: 是一个解决mysql原生主从同步延迟的方案。 transfer本身是一个在mysql源码上打的patch,可以用于当slave,也可以用于当第三方工具,将master的数据同步发给slave。 利用多线程实现主从无延迟。
q: transfer目前的发布形式?
a: transfer会在今年内开源,目前的发布形式是可执行的mysqld文件。 有两个版本,分别是官方的5.1.48 和 percona server 5.5.18.
-
transfer.mysql.5.1.48 下载地址   md5: 4d49f8d90e8bee8c870c1ef3a38cc979
transfer.percona.5.5.18 下载地址  md5: f4783971c38008e0780cca44a97368eb
最后更新日期 2012.9.12
(下载后先对一下md5 ^_^)
q: transfer是否会改变主库上的binlog在从库上的执行顺序,导致数据不一致?
a:会改变执行顺序。但transfer保证对于相同记录的操作都是按顺序的,因此不会导致数据不一致。
q: 我使用了transfer模式,但是transfer的错误日志为什么一直在输出 trans->inner_events 3,而从库上没有更新?
a: transfer启动前需要保证transfer里面要有与slave上相同的表和表结构,请先确认下,若无,则需要从slave把schema都dump 过去。
q: 我用的是mysql5.1.48版本,我在transfer里面建表的时候会core dump
a: 若你用的是innodb_plugin版本,还需要替换ha_innodb_plugin.so.0.0.0 (lib/mysql/plugin 目录下) 下载地址
q: 需要配置上做什么改变
a:请参考此文 http://www.linuxidc.com/linux/2012-09/70627.htm
q: 对主从库有什么配置限制
a:有以下限制
1) 主库的binlog格式必须是row
2) 主库的表必须有primary key
3) 从库的 max_allowed_packet建议改为1g。主库的单个事务大小不能超过max_allowed_packet
q: 我覆盖了mysqld后,transfer整个实例起不来?
a:先确认一下mysqld是否有可执行权限, 若无,执行 chmod 755 mysqld.
q: 我用slave模式,能够随时替换回原来的版本吗?
a: 如果要随时替换回原来的版本,可以把增加的参数都加上loose_前缀,这样替换mysqld,重启,start slave,就可以了。
q: 什么情况下不适合用transfer?
a: 其实一个简单的原则,如果你的原生从库不延迟,就不需要用(貌似是废话).
q: 我的测试场景下transfer的tps比原生的还慢?感谢 @-周博
a:  若是从空表开始压力,并且你的bp开很大,io性能很好,更新语句简单,qps很高(这个case里是12w/s),此时单线程完全能够执行得飞快。transfer模型中的生产+消费环节和多线程争用反而会导致性能下降(在这个case里面是6w/s)。
在实际线上场景中,更多的情况是io瓶颈,此时才能利用好多线程的效果,transfer的效果才能体现出来。在我们一个线上场景的测试中是原生500/s,用transfer后6000/s.
ps: 个人比较建议用源码安装,percona server的 源码地址
我的cmake参数
cflags=-o3 -g -fno-exceptions -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing
cxx=gcc
cxxflags=-o3 -g -fno-exceptions -fno-rtti -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing
export cflags cxx cxxflags
#cmake . -dcmake_install_prefix=/home/dingqi.lxb/mysql5 -dextra_charsets=all
cmake . \
  -dcmake_build_type:string=release             \
  -dsysconfdir:path=/home/mysql5            \
  -dcmake_install_prefix:path=/home/mysql5  \
  -denabled_profiling:bool=on                   \
  -denable_debug_sync:bool=off                  \
  -dmysql_datadir:path=/home/dingqi.lxb/mysql5/data    \
  -dmysql_maintainer_mode:bool=off              \
  -dwith_extra_charsets:string=all  \
  -dwith_big_tables:bool=on \
  -dwith_fast_mutexes:bool=on \
  -denable-profiling:bool=on \
  -dwith_ssl:string=bundled                     \
  -dwith_unit_tests:bool=off                    \
  -dwith_zlib:string=bundled                    \
  -dwith_partition_storage_engine:bool=on       \
  -dwith_plugins=heap,csv,partition,innodb_plugin,myisam \
  -ddefault_charset=gbk -ddefault_collation=gbk_chinese_ci -dwith_extra_charsets=all \
  -denabled_assembler:bool=on                   \
  -denabled_local_infile:bool=on                \
  -denabled_thread_safe_client:bool=on          \
  -denabled_embedded_server:bool=off             \
  -dwith_client_ldflags:string=all-static                 \
  -dinstall_layout:string=standalone            \
  -dcommunity_build:bool=on;
其它类似信息

推荐信息