如何利用mysqldump備份MySQL資料庫

來源:互聯網
上載者:User

 在現實工作中,定期備份資料庫是一項極為重要的事情。當我們使用MySQL時,在Database Backup方面有許多選擇的餘地,而本文將向讀者介紹如何使用MySQL的mysqldump來備份資料庫。

  一、資料備份的重要性

  工作中,如果意外刪除了重要的檔案或者目錄的話,那結果可就慘了。尤其是當誤刪除的資料涉及重要的客戶或者關鍵項目,並且這些資料無法輕易重新建立的時候,那滋味,不用我說你也能想象得到。不巧的是,像這樣的資料在公司環境中隨處可見,例如銷售記錄、客戶連絡方式,等等。

  所以,在現實工作中,定期備份資料庫是一項極為最需關注的事的事情,否則就可能帶來災難性的後果。當我們使用MySQL時,在Database Backup方面有許多選擇的餘地。本文將向讀者介紹如何使用MySQL的mysqldump來備份資料庫。

  二、關於mysqldump

  MySQL自身提供了許多命令列工具,例如mysql工具可以用來與MySQL的資料庫模式、資料、使用者和組態變數進行互動,而mysqladmin工具則可以進行各種管理工作,還有就是下面將要介紹的mysqldump。此外還有很多,不過那超出了本文的討論範圍。工具mysqldump既可以用來備份資料庫模式,還可以用來備份資料;利用它,我們不僅可以對一個伺服器上的所有資料庫進行地毯式的備份,同時我們還可以選擇性地備份某個資料庫,甚至資料庫中指定的某些表。

  當在伺服器上安裝MySQL的時候,應修改系統路徑以便使全域命令列可以訪問各個客戶程式。開啟終端視窗,並執行下列命令:

%>mysqldump Usage: mysqldump [OPTIONS] database [tables] OR mysqldump [OPTIONS] 
--databases [OPTIONS] DB1 [DB2 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

   當我們執行這個指令碼的時候,它會將wikiDatabase Backup到一個按照備份時間命名的檔案中,如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主伺服器中將資料複製到從伺服器中。

  六、小結

  本文中,我們與讀者一道建立了一個簡單的MySQL備份解決方案。如果您之前還未實施任何解決方案的話,不妨立即動手試一下。重要的是,這隻需要花費您幾分鐘的時間,我想這是很划得來的。




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.