有同學討論到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可以不改變。
當然,兩種都是支持的,膽子大的可以把第一種用起來,免費保修還不行嘛。