mysql transfer解决Mysql主从延迟

在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. 重启数据库

你可能感兴趣的:(mysql transfer解决Mysql主从延迟)