在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種數據庫備份方式的優缺點:
使用mysqlhotcopy等程序備份速度快,因為它直接對系統文件進行操作,但是需人為協調數據庫數據的備份前後一致性。
mysqldump程序備份數據庫較慢,但它生成的文本文件便於移植。
對於沒有使用InnoDB的數據庫,用mysqlhotcopy是最好的方法;否則必須采用mysqldump。不論如何,直接拷貝文件的備份方法應該被廢棄了。