如何從 CentOS 的命令行備份 MySQL 數據庫?
我需要在 CentOS 5.5 上備份數據庫,從命令行執行 MySQL 伺服器。基本上我需要導出其中的所有內容。
mysqldump - 閱讀手冊頁了解詳情。
請注意,生成完整備份文件可能需要一些時間 - 如果您想要一致的備份,請考慮設置複製從屬(並在進行備份時關閉複製)。
如果您有一個大型數據庫,您希望在備份期間保持線上(即不讀取鎖定),您還可以考慮使用來自 percona 的 xtrabackup 的innobackupex腳本,該腳本支持 inno 和 myisam 的線上備份(在一定程度上保持一致性)
Zmanda 有一個 ZRM 管理器產品,它封裝了該
mysqldump
工具並結合了調度程序和報告代理,便於管理 cron 作業和恢復。xtrabackup manager 也是一個命令行工具,它在某種程度上包裝呼叫並管理調度…… http://code.google.com/p/xtrabackup-manager/
還有holland,另一個支持多個後端的命令行 mysql 備份包裝器。
從@symcbean 開始,這是我嘗試使用混合的 myisam 和 innodb 引擎配置對系統進行一致的命令行轉儲…(這顯然會使您的數據庫在完成之前只讀,並且任何 INSERT/UPDATE /DELETE 查詢將被阻止等)
FLUSH TABLES WITH READ LOCK; SET GLOBAL read_only = ON; #--single-transaction is only useful if all the tables are innodb SYSTEM mysqldump --lock-all-tables --quick --all-databases > all-databases.sql SET GLOBAL read_only = OFF; UNLOCK TABLES;
需要注意的是 GLOBAL read_only 不尊重 root 使用者,所以如果你以 root 身份執行你的 web 應用程序,那麼你必須確保它們也被停止。
此外,如果您的文件系統是 xfs,或者在 LVM 上,您可以使用本機 fs 工具在 fs 級別獲得 READ 鎖定,從而避免對數據庫級別鎖定的要求。例如對於 xfs;
系統 xfs_freeze
對於 lvm 有 dmsetup。