mysqldump能將數據庫中的數據備份成一個文本文件,它先查出須要備份的表結構,再在文本文件中生成create語句,將表中全部記錄轉換成insert語句,這些語句在還原時使用。mysql
mysqldump的語法以下:sql
mysqldump -u username -p dbanme table1 table2 ……> backupname.sql數據庫
缺失表名時表示整個數據庫,備份的文件名能夠加上絕對路徑,一般會將備份的文件名以sql結尾。ide
eg:使用root用戶備份test庫下面的student表工具
mysqldump -uroot -p test student >/backup/studetn.sql內存
mysqldump備份多個數據庫的語法以下:it
mysqldump -u username -p dbname1 dbname2 …… > backupname.sqlio
mysqldump -u username -p --all-databases> backupname.sqlinnodb
直接複製全部目錄簡單快速,可是複製時最好先將mysql的服務停掉,避免數據不一致,並且對於innodb不適用,比較適用於myisam引擎。且最好是相同版本的mysql 數據庫,不然可能會存在文件類型不一樣的狀況。table
mysqlhotcopy的備份速度比mysqldump要快,mysqlhotcopy是一個perl腳本,使用lock tabales,flush tables和cp來進行快速備份。其工做原理是,先將須要備份的數據庫加一個讀操做鎖,而後用flush tables 將內存中的數據寫到硬盤,最後備份。
使用mysqlhotcopy須要dbi的perl模塊。
用法:
mysqlhotcopy [option] dbname1 dbname2 …… backdir/
mysql能夠執行備份文件中的create和insert語句建立表和插入語句來還原數據。
起基本語法以下:
mysql -u username -p [dbname] <backup.sql
若是使用--all-databases參數備份了全部數據庫,那麼還原時就能夠不用指定數據庫。
直接複製數據庫目錄,必定要記得將數據庫的用戶組跟用戶變成mysql