我使用的系統有兩台機器在主/主複製中運行 mysql。
我想將系統移到也進行主/主複製的新機器上。是否可以在不從舊叢集中刪除一個節點並將其替換為新節點並創建從第一個新節點到第二個新節點的新複製的情況下實現這一點?
假設我們有兩個處於活動狀態的節點node1和node2,並且正在執行master/master,我如何「神奇地」將叢集移動到名為new1和new2的新節點,而不需要太多停機時間。
答案1
你有 M1 <=> M2;您希望最終獲得新硬體 M3 <=> M4。
- (短暫中斷)將所有客戶端(作者和讀者)移至 M2。
- 取下 M1 足夠長的時間以克隆它,從而在此拓撲中產生 M3:M1 <=> M2 -> M3。 (M3 只是 M2 的從站。)
- 從 M3 建構 M4:M1 <=> M2 -> M3 -> M4。 (M3尚未使用,因此不會造成乾擾。)
- (短暫中斷)將所有客戶端從 M1 和 M2 移至 M3。在此過程中,請確保所有複製至少已到達 M3。
- 傑森 M1 和 M2。現在你只有 M3 -> M4。
- (短暫中斷)設定雙Master(M3 <=> M4);根據您的意願重新排列客戶。
請注意,這三種中斷都等於從死去的大師身上失敗。
使用雙主控時的一般建議:僅寫入兩台伺服器中的一台;使用另一個作為備份加讀取擴充功能。
更好的是,切換到 Galera Cluster(或 InnoDB Cluster),以便獲得自動故障轉移等功能。這樣的遷移將是相似的我剛才描述的。