Mysql

執行大型 MySQL 從站的頻繁備份

  • December 28, 2016

我們將生產 MySQL 數據庫(生產 120 GB)複製到專用的本地桌面電腦。本地從站是 2014 年的機器,具有 8 GB 的 RAM。

從站上的完整mysqldump數據庫只需不到 48 小時。壓縮後生成的轉儲為 5.4 GB。這個過程產生了可用的轉儲,但是轉儲過程的持續時間使我們無法每天對數據庫進行轉儲。

最多,我們似乎只能期望使用我們目前的設置每隔一天實現一次完整轉儲。為了再次促進每日轉儲,我們的方法需要有所改變。

一種可能性是簡單地添加另一個奴隸並讓這兩個奴隸交替傾倒幾天。

另一種方法(我討厭這種方法,但在技術上可行)是每週進行一次完整轉儲,然後保留所有二進制日誌以防需要更細粒度的數據。(我們可以恢復每周轉儲,然後執行二進制日誌直到某個時間戳)

我想一種完全不同的方法是使用 RAID 陣列和熱插拔驅動器,以便在驅動器被拉出時有效地獲取從屬設備的“快照”。(這似乎可行,但感覺相當冒險,就像嚴重濫用了 RAID 應該做的事情)

另一種完全不同的方法是簡單地對每天轉儲的某些表/數據庫進行“優先級排序”,而每周轉儲其他“不太重要”的表/數據庫。

我錯過了什麼?是否有用於歸檔“大型”MySQL 從屬伺服器的每日快照的“規範”解決方案?這似乎是那些維護大型數據庫的人經常遇到的事情。

最好的選擇真的是繼續在問題上投入更多的硬體嗎?

對於 120GB,有兩種方法可以獲得每日轉儲。(甚至每小時一次。)

使用 Replication,Slave 機器可以始終跟踪 Master 上的內容。也就是說,它是 Master 的最新轉儲,即使沒有按下“立即轉儲”按鈕。

使用 LVM(在某些作業系統上可用),您可以“立即”拍攝完整的磁碟“快照”,然後在閒暇時將轉儲複製到其他地方。

也許在多台機器上使用 mysqldump 的更快方法是使用

mysqldump ... | gzip | something-to-copy-to-other-machine

通過在訪問網路之前壓縮文件,您可以“最小化”所需的頻寬。

另請參閱 Percona 的 xtrabackup 以了解其他技術——尤其是完整備份與增量備份。

我建議看看 Percona Innobackupex - https://www.percona.com/software/mysql-database/percona-xtrabackup

它也可以從從屬設備執行(最好是複制格式 ROW)。

除了 LVM 之外,還有一個最快的變體:

  • 停止奴隸
  • 複製所有數據目錄
  • 啟動奴隸
  • 繼續壓縮和傳輸

它是一種快速的恢復方式,它可能需要與 mysqldump 相同的時間進行備份,但恢復速度會快得多。

您可以組合方法。percona 備份或文件級冷備份的缺點 - 您一次還原所有數據庫,並且需要一直使用 120+Gb 的數據進行操作。如果您將按數據庫進行定期轉儲 - 您可以在任何伺服器上單獨恢復它們。

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