[MySQL]利用mysqldump備份

mysqldump工具蠻常來使用備份資料庫,會將所要dump的Database備份成一個SQL Script檔案,如果要還原的話,只要在MySQL執行SQL Script即可。

一、mysqldump指令語法

 mysqldump [options] [db_name [tbl_name ...]]

二、 mysqldump選項

  • –all-databases, -A   輸出所有資料庫
  •  –databases, -B   輸出的資料庫名稱
  • –user=user_name, -u user_name   資料庫使用者名稱
  • –password[=password], -p[password]   資料庫使用者密碼
  • –complete-insert, -c  使用完整的INSERT指令,也就是包含欄位名稱
  • –no-create-db, -n   不輸出CREATE DATABASE指令
  • –no-create-info, -t   不輸出CREATE TABLE指令
  • –opt   是mysqldump中的預設參數,參數功能相等於加入了 –add-drop-table –add-locks –create-options –disable-keys –extended-insert-lock-tables –quick –set-charset等參數
  • –hex-blob   將binary的欄位(含BINARY, VARBINARY, BLOB等資料型態)轉換為16進位,如果有binary欄位要加入這個選項

在mysqldump的文件中有介紹到常用的指令方式

shell> mysqldump [options] db_name [tbl_name …]
shell> mysqldump [options] –databases db_name …
shell> mysqldump [options] –all-databases

三、mysqldump輸出範例

輸出blog資料庫的所有table

% mysqldump -u "myblog" -p"myBlogPassword" blog > blog_backup20130123.sql

有我們只要備份資料庫中的資料,因為資料庫的schema都建立好了,就可以加入不建立database及table的參數,也不需要輸出trigger

% mysqldump -u "myblog" -p"myBlogPassword" -c -n -t --skip-triggers blog > blog_backup20130123.sql

 四、將SQL Script匯入資料庫

除了可以利用phpMyAdmin進行上傳.sql檔案之外,也可以利用重導I/O來用

% mysqldump -u myblog -p"myBlogPassword" blog < blog20130123.sql

 

會筆記mysqldump是因為在使用資料庫的時候有建立binary的欄位,輸出成SQL Script進行備份,但是在測試復原的時候,卻在INSERT binary欄位的時候發生錯誤,只要加上 –hex-blob的選項,就會將binary欄位輸出為16進位,這樣就不會有問題了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料