在Mysql的主从同步是单线程的,这样在对多张表进行同步时往往速度会比较慢。针对这样的情况,淘宝丁奇在mysql基础上开发了一个新的支持多线程同步的程序,命名为Transfer,有兴趣的同学可以阅读他的博客http://dinglin.iteye.com/blog/1581877。
Transfer本身也是Mysql,只不过是用来转发而已,它的数据库中有需要同步的表的结构但是没有数据。Transfer往往和Slave部署在一起,当然也可以单独部署。从Master的角度来看,它的Slave就是Transfer;而从Salve的角度来看,Transfer就是一个Client而已。对于多台Master对应一个Slave的情况,可以在Salve上部署多台Transfer应对,即每台Transfer分别对应一个Master。在丁奇的博客中有具体描述,这里就不赘述。
本文直接介绍如何安装Transfer,如果对如何用源码安装mysql,部署多实例数据库,设置主从同步不太清楚的同学,可以参考我之前的博客。
【背景】
两台server均安装mysql,一台作为master,一台作为slave
【环境】
Redhat + mysql5.5.18 + transfer2.1
【参考】
http://dinglin.iteye.com/blog/1581877
http://dinglin.iteye.com/blog/1746185
【步骤】
<Transfer>
1. 解压Mysql5.5.18的tar文件并且安装在特定目录下。
2. 安装数据库。
3. 新建一个my3307.cnf文件放在/etc/下,编辑my3307.cnf,在[mysqld]下增加如下配置:
log-bin=slave-bin
### Remote Slave ####
remote_slave_hostname = 192.168.0.1 # slave的ip
remote_slave_username = root # slave的user,最好是root权限
remote_slave_password = root # slave上user的密码
remote_slave_port = 3306 # slave的监听端口
transfer_slave_thread = 10 # transfer启动的线程数
4. 下载Transfer.2.1-based-PS-5.5.18,将该文件替换安装目录下的mysqld文件。
5. 从master上导出数据库,在slave和transfer上分别导入,注意transfer上面只要导入表结构即可。
6. 设置transfer为master的slave。
7. 启动slave和transfer。
<Master>
1. 编辑/etc/my.cnf,在[mysqld]中 做如下修改
binlog_format=row
2. 重启数据库