mysqlhotcopy命令詳解 前言 mysqldump 是采用SQL級別的備份機制,它將數據表導成 SQL 腳本文件,數據庫大時,占用系統資源較多,支持常用的MyISAM,innodb mysqlhotcopy只是簡單的緩存寫入和文件復制的過程,占用資源和備份速度比mysqldump快很多很多。特別適合大的數據庫,但需要注意的是:mysqlhotcopy只支持MyISAM 引擎 使用mysqlhotcopy需要安裝perl支持,因為mysqlhotcopy是prel語言寫的。 所以使用前先安裝一下啊以下三個perl包 [plain] yum install -y perl perl-DBI perl-DBD-MySQL 安裝好了之後呢,如果你正常安裝mysql的話,無論是通過yum,apt-get 還是源碼安裝,那麼就可以直接使用 mysqlhotcopy了 mysqlhotcopy原理 mysqlhotcopy是一個Perl腳本,最初由Tim Bunce編寫並提供。它使用LOCK TABLES、FLUSH TABLES和cp或scp來快速備份數據庫。它是備份數據庫或單個表的最快的途徑,但它只能運行在數據庫目錄所在的機器上。mysqlhotcopy只用於備份MyISAM。它運行在Unix和NetWare中。 實際操作 這裡我個人有個習慣,就是在熱備的時候,刷新一下binlog日志,mysqlhotcopy有個--flushlog參數支持這一功能。 所以先看一下,數據庫裡面有哪些binlog日志,如下: 查看一下binlog日志此刻的使用到那個具體的binlog文件中,還有處於什麼位置,可以通過如下命令: 此時,知道了這些,就可以開始熱備了 $mysqlhotcopy -u user -p password --flushlog djangodb /tmp #注意-u user -p password 之間都要有空格,否則mysqlhotcopy識別不了,這裡和mysql,mysqldump命令還是有區別的 djangodb 是指庫名 /tmp 是指要備份的目錄位置,這裡備份後,會在/tmp下產生一個djangodb的目錄,裡面有相關的數據文件,如下圖: 這裡還需要注意的是,你得有select,reload(為了flush tables),lock tables權限。 好了,備份之後,可以再看一下binlog日志,此刻多了一個binlog日志。 binlog日志裡面的position位置也改變了。 這裡--flushlog,主要是為了備份和回復的角度考慮的。 一般這樣使用就足夠了,如果有特別需求,可以看一下啊man mysqlhotcopy的具體參數介紹