在MySQL中進行資料備份的方法有兩種:
1. mysqlhotcopy
這個命令會在拷貝檔案之前會把表鎖住,並把資料同步到資料檔案中,以避免拷貝到不完整的資料檔案,是最安全快捷的備份方法。
命令的使用方法是:
mysqlhotcopy -u root -p<rootpass> db1 db2 … dbn <output_dir>
如果需要備份全部資料庫,可以加上–regexp=”.*”參數。
Mysqlhotcopy命令可自動完成資料鎖定工作,備份時不用關閉伺服器。它還可以重新整理日誌,使備份檔案和記錄檔的檢查點能保持同步。
2. mysqldump
這個命令是用來把資料庫倒成sql檔案的,是非常古老的命令了。
命令的使用方法是:
mysqldump -u root -p<rootpass> –hex-blob db1 > db1.sql
加上–hex-blob參數以後,blob資料會被類似BASE64的方法轉換為文本來儲存在sql檔案中,就不會導致sql檔案格式問題了。經過測試,通過這種方法備份的blob資料再重新恢複回去能夠完全正確。
如果要備份所有的資料庫,可以加上–all-databases參數。
用mysqldump命令還可直接把資料庫轉移到另外一台伺服器上,不用產生備份檔案。重複執行可定期更新遠端資料庫。
% mysqladmin -h remote_host create testdb
% mysqldump –opt testdb | mysql -h remote_host testdb
另外還可通過ssh遠程調用伺服器上的程式,如:
% ssh remote_host mysqladmin create testdb
% mysqldump –opt testdb | ssh remote_host mysql testdb
2種Database Backup方式的優缺點:
使用mysqlhotcopy等程式備份速度快,因為它直接對系統檔案進行操作,但是需人為協調資料庫資料的備份前後一致性。
mysqldump程式備份資料庫較慢,但它產生的文字檔便於移植。
對於沒有使用InnoDB的資料庫,用mysqlhotcopy是最好的方法;否則必須採用mysqldump。不論如何,直接拷貝檔案的備份方法應該被廢棄了。