公司目前用的一主多从,当从库读压力过大时,会遇到主从延迟的问题 ,最近测试了主从延迟的方案 ,这是第二个方案,第一个方案请看 《relay fetch解决mysql replication 主从延迟》。
Transfer总体介绍
Mysql-transfer是一个基于msyql+patch后得到的一个主从同步工具。主要目的是为了解决mysql,从库单线程应用主库的binlog,导致的延迟。
总体结构
1、 transfer 可以注册成多个master的从库
2、 transfer接受多个master传入的binlog后将更新执行到slave上
3、 transfer 本地没有数据
4、 如果没有多主的需求,结构是Master->Transfer ->Slave
内部结构
slave由于sql_thread单线程的原因,导致主从延迟,那么提升用多线程来实现。
环境搭建
安装 mysql主从复制(略)
可以实现架构及配置模式,主要实现slave和transfer模式
Slave模式配置
前提主从环境搭建好,用提供的相对应mysql-transfer 可执行文件,替换slave下mysqld文件,并把mysql-transfer的可执行文件改名为mysqld, Slave的配置文件my.cnf做如下修改mysqld 下
默认值:
transfer_slave_thread =16
slave_skip_errors=1062,1032
transfer_slave_thread是只读参数,控制有多少个线程并发更新,一般建议配置为系统核数2倍。
Transfer 模式
前提是主从环境搭建好,在salve所在物理机上安装另一mysql实例,替换mysqld文件,并把mysql-transfer的可执行文件改名mysqld ,作为transfer ,transfer注册(change master)到master。Transfer的配置文件my.cnf 增加如下配置
transfer_slave_thread =
slave_skip_errors=1062,1032
remote_slave_hostname=
remote_slave_username=
remote_slave_