從另一個從站創建一個 MySQL 從站,但將其指向主站
問題
我在 2 台伺服器(主伺服器(A)和從伺服器(B)之間設置了 MySQL 複製。我需要在混音中添加一個新的奴隸(C)。我希望這個從站直接從主站獲取更新,我不想從從站進行鍊式複製。但是,master 很“熱”,我通常使用 Xtrabackup 創建 master 的完整備份,但這會鎖定它 10 分鐘,因為數據庫大小約為 20GB。
可能的解決方案
FLUSH TABLES WITH READ LOCK 在從機B上,在****B上使用 SHOW SLAVE STATUS ,記下 binlog 和位置。然後使用 Xtrabackup 備份數據庫,將備份傳送到C並使用它創建從屬,並將複製設置為指向A,並使用我剛剛記下的 binlog 位置。
問題
有沒有更好的方法不需要我鎖定B這麼長時間?或者更容易自動化的東西?
嘿,我知道一種創建從屬設備的瘋狂方法,而無需增加主設備(ServerA)或從屬設備(ServerB)的任何操作
步驟 1) 設置新伺服器 (ServerC)
步驟 2)在 ServerC 上,安裝 MySQL(與 ServerB 相同的版本)
步驟 3) 在 ServerC 上,服務 mysql 停止
步驟 4) 將 /etc/my.cnf 從 ServerB 複製到 ServerC
步驟 5) 在 ServerC 上,將 server_id 更改為與 ServerA 和 ServerB 不同的值
步驟 6) rsync /var/lib/mysql 在 ServerB 到 ServerC
步驟 7) rsync 完成後,執行“STOP SLAVE;” 在伺服器 B 上
步驟 8) rsync /var/lib/mysql 在 ServerB 到 ServerC
步驟 9) 在 ServerB 上,執行“START SLAVE;”
步驟 10) 在 ServerC 上,服務 mysql 啟動
步驟 11) 在 ServerC 上,執行“START SLAVE;” (如果 skip-slave-start 在 /etc/my.cnf 中,請執行此操作)
試試看 !!!
順便說一句,我非常有信心這會奏效,因為我在過去 2 天裡剛剛為客戶做了這件事。客戶端在從屬設備上有 2.7TB 的數據。當從伺服器仍然處於活動狀態時,我 rsyncd 到另一台伺服器。rsync 花了大約 11 個小時。然後我跑了 STOP SLAVE;在第一個從屬設備上並再次執行 rsync。那又花了一個小時。然後我執行了上述步驟,一切都完成了。