Mysql

Percona xtrabackup 是我 500GB MySQL 備份的正確選擇嗎?

  • September 25, 2012

我有一個 500GB 的 MySQL 數據庫,主要由 Innodb 表和一個大 (200GB) MyISAM 表組成。我目前的備份策略是將 db 文件複製到外部硬碟驅動器。這會導致停機時間約為 4 小時。我的需求:

  1. 低成本。
  2. 恢復時間可能很長。無需實時複製。
  3. 可以處理 1 周到 2 週範圍內的數據失去。
  4. 希望備份的停機時間盡可能短,但可以忍受長達 2 小時的任何事情。

目前正在考慮嘗試遷移到 Percona xtrabackup。它是我案例的正確解決方案嗎?我特別擔心它會鎖定 MyISAM 表和學習曲線。

從這個角度來看,您可以使用不同的數據庫基礎架構。

根據您上述的需求,我有一個建議,但需要一些妥協。

建議 #1:在同一台伺服器但不同磁碟上使用 MySQL 複製

在這個建議中,您的第二個需求 ( No need of real-time replication) 將不得不稍稍退居二線。既然你有一個足夠大的外置硬碟來支持 XtraBackup,為什麼不在同一個盒子上用作第二個 MySQL 實例的數據目錄呢?

我編寫了自己的服務腳本,為埠 3307 - 3399 提供專用的 mysql 實例。這是我過去的文章:

建議 #2:在不同的伺服器上使用 MySQL 複製

考慮到您的第一個需求 ( Low Cost),如果您可以訪問具有足夠磁碟空間的商品伺服器,請將 MySQL 複製設置到該外部伺服器。這樣您就可以在從屬設備上執行備份,如下所示

  • STOP SLAVE;
  • XtraBackup
  • START SLAVE;

您可以在 Master 上實現零影響(無伺服器負載、無磁碟 I/O)

建議 #3:並行 mysqldumps

您可以設置數據庫或表的並行 mysqldumps。這可能會縮短備份時間。XtraBackup 本質上是使用時間點敏感操作進行檢查點事務備份,以便備份的時間點是備份完成的時間點。在未複製的從屬設備上使用並行 mysqldumps 可為您提供備份,其時間點是備份的開始。在停止的從站上執行 mysqldump 將與儲存引擎無關。換句話說,表是 InnoDB 還是 MyISAM 都沒有關係。

如果將此應用於 SUGGESTION #1,這將導致伺服器負載和磁碟 I/O,因為 Master 和 Slave 都駐留在同一台機器上。

如果您將此應用於建議 #2,則對 Master 沒有任何懲罰。您可以在 Slave 上隨意執行備份。您也不必擔心鎖定 MyISAM 表。

請參閱我過去關於並行 mysqldumps 的文章

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