共計 2672 個字符,預計需要花費 7 分鐘才能閱讀完成。
如何使用 mysqldump 備份 MySQL 數據庫,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
一、數據備份的重要性
工作中,如果意外刪除了重要的文件或者目錄的話,那結果可就慘了。尤其是當誤刪除的數據涉及重要的客戶或者關鍵項目,并且這些數據無法輕易重新創建的時候,那滋味,不用我說你也能想象得到。不巧的是,像這樣的數據在公司環境中隨處可見,例如銷售記錄、客戶聯系方式,等等。
所以,在現實工作中,定期備份數據庫是一項極為最需關注的事的事情,否則就可能帶來災難性的后果。當我們使用 MySQL 時,在數據庫備份方面有許多選擇的余地。本文將向讀者介紹如何使用 MySQL 的 mysqldump 來備份數據庫。
二、關于 mysqldump
MySQL 自身提供了許多命令行工具,例如 mysql 工具可以用來與 MySQL 的數據庫模式、數據、用戶和配置變量進行交互,而 mysqladmin 工具則可以進行各種管理任務,還有就是下面將要介紹的 mysqldump。此外還有很多,不過那超出了本文的討論范圍。工具 mysqldump 既可以用來備份數據庫模式,還可以用來備份數據; 利用它,我們不僅可以對一個服務器上的所有數據庫進行地毯式的備份,同時我們還可以選擇性地備份某個數據庫,甚至數據庫中指定的某些表。
當在服務器上安裝 MySQL 的時候,應修改系統路徑以便使全局命令行可以訪問各個客戶程序。打開終端窗口,并執行下列命令:
% mysqldump Usage: mysqldump [OPTIONS] database [tables] OR mysqldump [OPTIONS]
–databases [OPTIONS] DB1 [DB3…] OR mysqldump [OPTIONS] –all-databases [OPTIONS]
For more options, use mysqldump –help
這里給出了使用 mysqldump 程序的方法。舉例來說,若要備份所有數據庫模式和數據至文件 backup092210.sql 的話,可以執行如下所示的命令:
% mysqldump -u root -p –all-databases backup092210.sql Enter password:
這里,為了能夠訪問所有數據庫,我們需要一個 root 權限,所以這里需要在提示符后面輸入相應口令。此外,如果你是在開發用的服務器上練習這些命令的話,不妨花一些時間看看備份文件的內容。這時您會看到一系列的 SQL 語句,先是刪除各個表后重新創建的語句,然后是重新創建相關數據的語句。另外,由于上面的例子中我們對所有數據庫進行備份,所以您還會發現,備份文件將創建每個數據庫 (如果它還沒有存在的話),然后通過 USE 命令切換到該數據庫,進而創建與該數據庫相關的表跟數據。
若要備份單個數據庫,例如要備份名為 wiki 的數據庫到一個名為 wiki-backup092210.sql 的文件中,我們可以使用如下所示的命令:
% mysqldump -u root -p wiki wiki-backup092210.sql Enter password:
最后,若要備份數據庫中名為 users 的表的話,例如要把它備份到名為 wikiusers-backup092210.sql 的文件中,我們可以使用如下所示的命令:
% mysqldump -u root -p wiki users wikiusers-backup092210.sql Enter password:
三、調整備份內容
有時候,我們可能只想備份數據庫的模式,或者只想備份數據庫的數據。為了備份數據庫模式,可以向 mysqldump 傳遞參數 –no-data,如下所示:
% mysqldump -u root -p –no-data wiki wiki-backup092210.sql
為了只備份數據庫的數據,可以向 mysqldump 使用參數 –no-create-info,如下所示:
% mysqldump -u root -p –no-create-info wiki wiki-backup092210.sql
四、如何自動進行備份
對于前面所舉的例子,僅需要少量的擊鍵次數就能執行 mysqldump 命令。然而,工作中要干的活還有很多,并且如果老是執行這些命令的話,那么生活就會變得太單調了。因此,我們可以設法使這些過程自動化,這時我們可以借助 cron 工具來達成我們的目標,這個工具在所有類 UNIX 操作系統上都能找到。為了自動執行備份任務,我們需要新建一個正確命名的文件。例如 nightly-backup.sh,具體命令如下所示:
#!/bin/sh mysqldump -uroot -psecret wiki /home/backup/sql/wiki-backup-`date +%m%d%Y`.sql
當我們執行這個腳本的時候,它會將 wiki 數據庫備份到一個按照備份時間命名的文件中,如 wiki-backup-092210.sql。您需要注意一下這里的用戶名 root 和口令 secret 是如何傳遞給 mysqldump 的,即將它們分別放到選項 - u 和 - p 后面。從安全的角度講,我們必須進行正確的權限設置。
接下來,我們將這個腳本提供交給 cron,方法是使用 crontab。為此,我們可以執行如下所示的命令:
% crontab -e
這將打開當前登錄用戶的 crontab 文件,如果該文件不存在的話就會自動新建一個。在這個文件中,我們可以添加如下內容,來確保每天上午 3 時運行該備份腳本:
0 3 * * * /home/backup/scripts/nightly-backup.sh
如果您對 crontab 的語法很陌生的話,這里的參數可能讓您摸不著頭腦。這里前五個參數分別對應于執行腳本的時間,依次為分、時、日、月和星期幾。因此,要想在每星期二的 4:45am 執行腳本的話,可以使用參數 45 4 * * 3。
插入上面所示的一行內容后,保存文件,那么我們的任務就會開始按照給定時間調度執行。 需要注意的是,第二天早上一定要查看相應的目錄,看看事情是否一切正常。
五、其它備份方案
就像本文前面所說的那樣,mysqldump 只是 MySQL 眾多備份方案中的一個。此外,您還可以使用 MySQL 的二進制日志文件進行增量備份,或者使用從 MySQL 主服務器中將數據復制到從服務器中。
看完上述內容,你們掌握如何使用 mysqldump 備份 MySQL 數據庫的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!