主從多線程同步工具,Transfer 2.0 發布

jopen 12年前發布 | 13K 次閱讀 MySQL

背景

       Transfer是一個主從多線程同步工具,直接patch在MySQL中。2011年開發完成。于去年的12.12上線,并撐住高峰期主從,保證從庫無延遲,使得應用能夠直接從從庫上讀數據。


新功能

       Transfer第一版本存在兩個可改進的點:單表并發和事務支持。

a)      Transfer2.0支持單表并發,基本原理就是按照更新行的主鍵id (因此有一個限制是同步的表必須要有主鍵)。

b)      Transfer2.0支持slave回放主庫事務時以事務為單位執行。

內部基本結構

Transfer1.0

主從多線程同步工具,Transfer 2.0 發布

為什么不直接寫到slave里面?由于DBA同學覺得直接寫在slave里面擔心數據安全性,因此改造成第一個第三方工具。

Transfer2.0

主從多線程同步工具,Transfer 2.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,配置時還少了一步拷貝表結構

三個可執行文件下載地址

文章地址Transfer2.0 發布啦

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!