Mysql

最大限度地減少 MariaDB 複製設置期間的停機時間

  • January 16, 2022

我的任務是設置 MariaDB (10.0) 複製,從在數據中心執行的主伺服器到在 AWS VPC 中執行的從伺服器。閱讀有關設置複製的說明 - MariaDB 知識庫FLUSH TABLES WITH READ LOCK中提到了在使用 mysqldump 將數據庫傳輸到從屬伺服器時對主伺服器 ( ) 上的所有表進行鎖定。這一步讓我有點擔心,原因如下

  1. 我們有許多大型數據庫(~20 個 DB @ 40G)和一些大型數據庫(~3 @ 100G)。
  2. 將每個 DB 傳輸到從站大約需要 40 分鐘。總的來說,整個過程可能需要20幾個小時(假設條件良好)。
  3. 我們不能長時間保持對 master 的鎖定——因為我們在表被鎖定時會中斷業務。
  4. 如果在將轉儲複製到從站的過程中出現任何故障 - 我們將徒勞地關閉主站,可能需要再次嘗試。

在這種情況下,以最少的生產停機時間來設置複製的好方法是什麼。我對一些開箱即用的想法持開放態度 - 有沒有辦法通過分解事情並分階段進行,以便我們可以驗證每個階段?

編輯 我應該補充一點,我們確實將數據庫的夜間轉儲作為備份策略的一部分。也許有一種方法可以使用這些來幫助這個過程?

使用 mysqldump 備份是一個緩慢的過程。使用 Mariabackup/Xtrabackup 之類的備份工具。它需要對所有數據進行物理備份。它可以進行熱備份,因此不需要鎖定或停機時間。

瑪麗亞備份

超備份

使用–mysql-master-status-file 文件選項使用您的 EBS 卷的https://github.com/alestic/ec2-consistent-snapshot

從該快照創建一個新卷並附加到新實例或另一個實例,如果需要,您可以使用它來複製到遠端位置。數據庫伺服器只會被鎖定幾秒鐘。我剛剛在一台擁有數百萬表的 2TB 伺服器上執行了這個操作。

使用來自其他伺服器的數據文件啟動從屬數據庫重置從屬數據庫並使用正確的日誌位置更改您的主數據庫。

引用自:https://dba.stackexchange.com/questions/127233