一、 關(guān)于 Transfer MySQL-Transefer(下稱Transfer)是一個基于MySQL+patch后得到的主從同步工具。 其主要目的是為了解決原生版本的主從同步里,從庫是單線程apply主庫的binlog,導(dǎo)致的延遲。 最近完成測試的版本將multi-master (by P.Linux)合并到Transfer
一、關(guān)于Transfer
MySQL-Transefer(下稱Transfer)是一個基于MySQL+patch后得到的主從同步工具。
其主要目的是為了解決原生版本的主從同步里,從庫是單線程apply主庫的binlog,導(dǎo)致的延遲。
最近完成測試的版本將multi-master (by P.Linux)合并到Transfer中并針對支付寶的應(yīng)用需求做了定制性能改進(jìn)。
這里做一個已經(jīng)完成的完整功能介紹。
二、總體結(jié)構(gòu)
說明:
1、Transfer可以注冊成多個Master的從庫
2、Transfer接收多個Master傳入的binlog后將更新執(zhí)行到Slave上
3、Transfer本地沒有數(shù)據(jù)
如果你沒有多主的需求,那結(jié)構(gòu)就是Master -> Transfer -> Slave.
三、內(nèi)部結(jié)構(gòu)
既然是單線程造成的主從延遲,提升就需要用多線程來實現(xiàn)。
我們來看單主情況下的內(nèi)部實現(xiàn)。
說明:左上角是Master, 右上角是Transfer,下面是Slave。
四、增加參數(shù)及對應(yīng)說明
在my.cnf中新增如下幾個參數(shù):
remote_slave_hostname = Ip of Slave
remote_slave_username = root
remote_slave_password = root
remote_slave_port = Port of Slave
stop_slave_on_error = 1
remote_table_maps_file = ./table_maps
transfer_slave_thread = 10
說明:
1、 前四個是目標(biāo)slave庫的認(rèn)證信息
2、 Stop_slave_on_error 一般建議配置為1,表示只要有一個線程執(zhí)行出錯,所有slave_io_thread都停止
3、 remote_table_maps_file路徑指向本地文件,文件中每行格式為 “表1 表2”,表示在Transfer做同步時,將Master上所有對表1的操作都更新到表2.
4、 transfer_slave_thread是一個只讀參數(shù),控制Transfer有多少個線程做并發(fā)更新(若為1則表示串行更新,性能與官方版本相同)。一般建議配置為系統(tǒng)核數(shù)2倍。
五、一些說明
1、由于Transfer是在MySQL基礎(chǔ)上打的patch,因此支持幾乎所有MySQL的監(jiān)控命令,你原來加在Slave上的監(jiān)控,可以直接改到Transfer上。
2、 一般我們將Transfer和Slave放在同一個機器上(等于是裝兩個MySQL,一個是Transfer,一個是真正的slave)
3、 Transfer按照表名hash將不同表的更新分配到不同的線程,因此在多表環(huán)境下才能看得到性能提升
4、 Master的binlog格式必須設(shè)置成row
5、 若需要用到多個Master,給每個Master命令一個channel,命令 序列為 change master channel1 to master_log_file=xxx…… ; start slave channel1; 可以單獨對一個chanel執(zhí)行start\stop等命令
6、 若只需要一個master,則語法格式不變
六、性能效果
測試場景如下,在Master上的16個表并發(fā)分別插入10w行。期間先停止同步。插入完成后,再分別測試直接用原生版本主從和Transfer的性能。
主庫插入耗時66.1s 。
耗時 |
平均tps |
|
MySQL主從 |
363s |
4402/s |
Transfer同步 |
66s |
24242/s |
七、Patch應(yīng)用
下載地址。 基于5.1.48, patch –p0 < transfer_mysql.diff. 后續(xù)安裝步驟與原生MySQL相同.
示例my.cnf 從此下載,記得修改程序安裝目錄。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com