Mysql

從另一個從站創建一個 MySQL 從站,但將其指向主站

  • March 26, 2020

問題

我在 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。那又花了一個小時。然後我執行了上述步驟,一切都完成了。

引用自:https://serverfault.com/questions/257394