Transfer在MySQL雙主同步架構中的應用

有同學討論到Transfer能否支持雙主結構,答案是支持的,這里簡要描述下。 背景 Transfer既可以當作主從庫之外的工具來用,也可以本身充當slave的角色。本文分別描述在這兩種使用場景下的部署結構和切換動作。 Slave模式 a) 結構 – 這個就是最簡單的雙主啦,Tr

有同學討論到Transfer能否支持雙主結構,答案是支持的,這里簡要描述下。

背景

Transfer既可以當作主從庫之外的工具來用,也可以本身充當slave的角色。本文分別描述在這兩種使用場景下的部署結構和切換動作。

Slave模式

a)????? 結構

這個就是最簡單的雙主啦,Transfer呢?代碼直接寫到這兩個Master里面啦,所以他們就是Transfer.

b)????? 切換

DBA同學就用你最熟悉的切換過程去操作。

1)????? 停止對Master1的更新

2)????? 確定數據完全同步

3)????? 將更新引Master2

這里由Transfer的機制保證步驟2)的時間會很短(因為無延遲)。

工具模式

a)????? 結構

如果你比較擔心數據安全,怕這個patch作為直接充當master1和master2會有風險,(這是負責任的態度!),就用上圖表示的結構。

其中Transfer1(T1)和Master1(M1)在同一個機器上,(Transfer1)T2和(Master)M2共同在另外一個機器上。

斜線表示主從關系,T1是M2的從庫,T2是M1的從庫。

??? 垂直線表示更新關系,T1收到的同步命令用與更新M1, T2更新M2

b)????? 切換

切換過程跟第一種模式的一模一樣。

小結

兩種模式的取舍上,第一種運維比較簡單,但是風險比較大,如果Transfer有bug,要更新版本,或者要換會原來的主從時,必須得重啟Master1和Master2,這種操作并不是所有的系統都能容忍。

第二種模式我比較推薦。好處有以下幾個:

1、Transfer本身不帶數據,就算coredump了也不會影響數據服務。同步過程自然要切換回原來的主從方法,就讓M1跟M2直連。

(看官問:怎么你這推廣東西的說來說去不是bug就是coredump的?

筆者答:雖然我已經做了自認為足夠的測試,但風險總要說明,這是負責任的態度,不然回頭你用了把數據服務搞掛,跨省我,咋整?)

2、Master要升級版本(比如你以后要升級成5.6),Transfer可以不改變。

當然,兩種都是支持的,膽子大的可以把第一種用起來,免費保修還不行嘛。

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享