Percona xtrabackup 是我 500GB MySQL 備份的正確選擇嗎?
我有一個 500GB 的 MySQL 數據庫,主要由 Innodb 表和一個大 (200GB) MyISAM 表組成。我目前的備份策略是將 db 文件複製到外部硬碟驅動器。這會導致停機時間約為 4 小時。我的需求:
- 低成本。
- 恢復時間可能很長。無需實時複製。
- 可以處理 1 周到 2 週範圍內的數據失去。
- 希望備份的停機時間盡可能短,但可以忍受長達 2 小時的任何事情。
目前正在考慮嘗試遷移到 Percona xtrabackup。它是我案例的正確解決方案嗎?我特別擔心它會鎖定 MyISAM 表和學習曲線。
從這個角度來看,您可以使用不同的數據庫基礎架構。
根據您上述的需求,我有一個建議,但需要一些妥協。
建議 #1:在同一台伺服器但不同磁碟上使用 MySQL 複製
在這個建議中,您的第二個需求 (
No need of real-time replication
) 將不得不稍稍退居二線。既然你有一個足夠大的外置硬碟來支持 XtraBackup,為什麼不在同一個盒子上用作第二個 MySQL 實例的數據目錄呢?我編寫了自己的服務腳本,為埠 3307 - 3399 提供專用的 mysql 實例。這是我過去的文章:
Sep 17, 2012
: mysqlservice 命令語法Sep 30, 2011
:在同一主機上執行多個實例建議 #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 的文章
Jul 24, 2012
:如何將混合了 InnoDB 和 MyISAM 的 MySQL 數據庫複製到同一台伺服器?May 22, 2012
: MySQL 伺服器備份Oct 01, 2011
:快速 MySQL 備份Apr 17, 2011
:如何優化大型數據庫的mysqldump?