為了安全起見(jiàn),需要經(jīng)常對數據庫作備份,或者還原。對于 MySQL 而言,最方便的方法可能就是用 phpMyAdmin 的導出、導入功能了,但如果你的數據庫體積比較大,作為 Web 應用的 phpMyAdmin 可能會(huì )遭遇“超時(shí)”而操作失敗。所以,學(xué)會(huì )在命令行模式下備份、還原數據庫,還是很有必要的。
1、備份數據庫
在 Linux 命令行模式下備份 MySQL 數據庫,用的是 mysqldump 命令:
mysqldump -u mysqluser -p test_db
對以上命令稍作解釋?zhuān)?
·-u 意味著(zhù)你要指定一個(gè) MySQL 用戶(hù)名來(lái)連接數據庫服務(wù),如上面的 mysqluser 即為 MySQL用戶(hù)名。
·-p 則意味著(zhù)你需要有一個(gè)有效的,與以上用戶(hù)名對應的密碼。
·最后一個(gè)參數則是需要備份的那個(gè)數據庫的名稱(chēng):test_db
如果直接執行以上命令,緊接著(zhù)就會(huì )提示需要輸入 MySQL 密碼,數據密碼后,它會(huì )直接將備份出來(lái)的 SQL 腳本顯示在屏幕上,這當然不是我們想要的結果。我們需要把數據庫備份成一個(gè)文件,可用以下命令:
mysqldump -u mysqluser -p test_db > test_db.sql
這樣,就會(huì )在當前目錄下備份出一個(gè)名為test_db.sql的文件。
當然,如果數據庫體積比較大,通常會(huì )對備份出來(lái)的文件進(jìn)行壓縮,備份和壓縮可以在同一行命令內完成:
mysqldump -u mysqluser -p test_db | gzip > test_db.sql.gz
壓縮的時(shí)候,最好再給文件名加上擴展名.gz,以便下次還原數據庫的時(shí)候心中有數。
2、還原數據庫
還原數據庫的命令也很簡(jiǎn)單,如果你備份出來(lái)的文件是未壓縮的版本,則還原數據庫的命令如下:
cat test_db.sql | mysql -u mysqluser -p test_db
用cat命令,把 SQL 腳本內容輸出給 MySQL 程序以便還原??梢钥吹?,MySQL 后面的幾個(gè)參數,跟備份時(shí)候的一樣。
如果是已壓縮版本的備份文件,則需用以下命令才能還原:
gunzip < test_db.sql.gz | mysql -u mysqluser -p test_db
類(lèi)似地,用gunzip命令,解壓縮,然后把腳本內容輸出給 MySQL 程序以便還原。
2012-10-08 update:
如不考慮將 .sql 文件壓縮打包的話(huà),也可以用下面兩條語(yǔ)句分別導出、導入。
mysqldump -u root -p test_db > test_db.sql
mysql -u root -p test_db < test_db.sql
備份MySQL數據庫的命令
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
備份MySQL數據庫為帶刪除表的格式
備份MySQL數據庫為帶刪除表的格式,能夠讓該備份覆蓋已有數據庫而不需要手動(dòng)刪除原有數據庫。
mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql
直接將MySQL數據庫壓縮備份
mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
備份MySQL數據庫某個(gè)(些)表
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
同時(shí)備份多個(gè)MySQL數據庫
mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql
僅僅備份數據庫結構
mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql
備份服務(wù)器上所有數據庫
mysqldump –all-databases > allbackupfile.sql
還原MySQL數據庫的命令
mysql -hhostname -uusername -ppassword databasename < backupfile.sql
還原壓縮的MySQL數據庫
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
將數據庫轉移到新服務(wù)器
mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename