簡體   English   中英

如何備份MySQL數據庫?

[英]How do I backup a MySQL database?

備份數百萬條目的數據庫時,我需要考慮什么? 我可以使用任何工具(可能與MySQL服務器捆綁在一起)嗎?

根據您的要求,我自己使用了幾個選項:

  • 如果您不需要熱備份,請關閉數據庫服務器並備份文件系統級別,即使用tar,rsync或類似方法。
  • 如果確實需要數據庫服務器繼續運行,可以從mysqlhotcopy工具(perl腳本)開始,該工具鎖定正在備份的表,並允許您選擇單個表和數據庫。
  • 如果你希望備份是可移植的,你可能想要使用mysqldump ,它創建SQL腳本來重新創建數據,但是比mysqlhotcopy慢
  • 如果你在某個時間點有一個db的副本,你也可以將binlogs(從那個時間點開始)保存在安全的地方。 這可以非常容易,並且不會干擾服務器的操作,但可能不是最快的恢復,並且您必須確保不要錯過部分日志。

方法我沒試過,但這對我有意義:

  • 如果您有像ZFS這樣的文件系統或者在LVM上運行,那么通過執行文件系統快照來創建數據庫快照可能是個好主意,因為它們非常非常快。 只需記住在整個操作過程中確保數據庫的一致狀態,例如通過FLUSH TABLES WITH READ LOCK (當然,之后不要忘記UNLOCK TABLES

另外:

  • 您可以使用主從設置將生產服務器復制到同一台計算機上的其他計算機或第二個實例,並對復制的副本執行上述任何操作,從而使您的生產計算機保持獨立。 您也可以定期啟動從站,讓它讀取binlog,然后再將其關閉,而不是連續運行。
  • 我認為,MySQL集群和企業許可版本有更多的工具,但我從未嘗試過。

Mysqlhotcopy描述得很糟糕 - 只有在使用MyISAM時它才有效,並且它不熱。

mysqldump的問題是恢復備份所需的時間(但如果您擁有所有InnoDB表,則可以使其變熱,請參閱--single-transaction)。

我建議使用熱備份工具,例如XtraBackup中提供的工具: http ://www.percona.com/docs/wiki/percona-xtrabackup:start

注意是否使用MyISAM存儲引擎在大型表上使用mysqldump; 它會在每個表上運行轉儲時阻止選擇,在某些情況下,這會占用繁忙的站點5-10分鍾。

相比之下,使用InnoDB,由於其行級鎖定,您將獲得非阻塞備份,因此這不是一個問題。

如果需要使用MyISAM,常見的策略是復制到第二個MySQL實例,並對復制的副本執行mysqldump。

使用phpMyAdmin中的導出選項卡。 phpMyAdmin是一個免費的易於使用的Web界面,用於執行MySQL管理。

我認為mysqldump是正確的做法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM