Transfer 2.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裏面新增如下幾行配置:

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

c)      將Slave中需要同步的表結構,導入到Transfer中。注意,只需要表結構,不需要數據。
       其中remote_slave系列配置的是一個有super權限訪問Slave的帳號。
      重啓即可。

在Transfer中的操作與在Slave中原本的操作相同,只是現在的關係是,Transfer註冊爲Master的主庫,得到操作步驟後,更新Slave.

Transfer變身Slave

       有的同學說我不想維護多一個實例。其實就so easy,只要把trasnfer的目標指向自己即可。
爲了安全起見,配置規則必須是
remote_slave_hostname配置爲127.0.0.1 且 remote_slave_port與Transfer端口相同。
當然,如果Transfer自己是slave,配置時還少了一步拷貝表結構

最新版本FAQ和下載地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章