1. 程式人生 > >Mysql資料庫簡易備份4種方法

Mysql資料庫簡易備份4種方法



第一種、直接拷貝資料庫。

 要求:

1、資料庫型別必須為MYISAM型別
2、在拷貝的過程中不要讓使用者執行諸如update,delete,insert這樣的更新語句。下面給出具體例項:
如:我的資料庫是安裝在/usr/local/mysql目錄下,資料目錄是/usr/local/mysql/data,要備份資料庫test,備份檔案存放在/backup/目錄下,則按以下幾步即可完成。
a、關閉資料庫:/usr/local/mysql/bin/mysqladmin -uroot -pxxx shutdown              xxx為你的密碼.
b、拷貝並壓縮資料庫test資料夾
   tar -zcvf /backup/test.tar.gz /usr/local/mysql/data/test
c、重新啟動資料庫伺服器
   /usr/local/mysql/bin/mysqld_safe --user=mysql&

通過上面三個步驟即可成功把test資料庫備份到/backup/目錄下.

第二種:使用mysqlhotcopy工具進行資料備份。
    第一種方法是最簡單的方法,不過要停止資料庫伺服器的執行,這在很多情況下會影響使用者的使用,因此並不常用。使用mysqlhotcopy可以在不用停止mysql伺服器的情況下進行資料備份。這種方法也非常簡單,只要下面一條語句即可實現把test資料庫備份到/backup/目錄下
    /usr/local/mysql/bin/mysqlhotcopy -uroot -pxxx test /backup/
    mysqlhotcopy在執行前將會鎖定資料庫,執行完畢後將自定釋放鎖定。
然後在進行壓縮:tar -zcvf /backup/test.tar.gz /backup/test

第三種:使用mysqldump工具進行資料備份。
    /usr/local/mysql/bin/mysqldump test -uroot -pxxx --opt test>/backup/test.sql
    --opt 此選項將開啟所有會提高檔案匯出速度和創造一個可以更快匯入的檔案的選項
然後在進行壓縮:tar -zcvf /backup/test.sql.tgz /backup/test.sql

mysqldump工具有大量的選項,部分選項如下:

選項/Option 作用/Action Performed
--add-drop-table
這個選項將會在每一個表的前面加上DROP TABLE IF
EXISTS語句,這樣可以保證導回MySQL資料庫的時候不會出錯,因為每次導回的時候,都會首先檢查表是否存在,存在就刪除

--add-locks
這個選項會在INSERT語句中捆上一個LOCK TABLE和UNLOCK
TABLE語句。這就防止在這些記錄被再次匯入資料庫時其他使用者對錶進行的操作

-c or - complete_insert
這個選項使得mysqldump命令給每一個產生INSERT語句加上列(field)的名字。當把資料匯出導另外一個數據庫時這個選項很有用。
--delayed-insert 在INSERT命令中加入DELAY選項
-F or -flush-logs 使用這個選項,在執行匯出之前將會重新整理MySQL伺服器的log.
-f or -force 使用這個選項,即使有錯誤發生,仍然繼續匯出
--full 這個選項把附加資訊也加到CREATE TABLE的語句中
-l or -lock-tables 使用這個選項,匯出表的時候伺服器將會給表加鎖。
-t or -no-create- info
這個選項使的mysqldump命令不建立CREATE TABLE語句,這個選項在您只需要資料而不需要DDL(資料庫定義語句)時很方便。
-d or -no-data 這個選項使的mysqldump命令不建立INSERT語句。
在您只需要DDL語句時,可以使用這個選項。
--opt 此選項將開啟所有會提高檔案匯出速度和創造一個可以更快匯入的檔案的選項。 //from www.w3sky.com
-q or -quick 這個選項使得MySQL不會把整個匯出的內容讀入記憶體再執行匯出,而是在讀到的時候就寫入導檔案中。
-T path or -tab = path 這個選項將會建立兩個檔案,一個檔案包含DDL語句或者表建立語句,另一個檔案包含資料。DDL檔案被命名為table_name.sql,資料檔案被命名為table_name.txt.路徑名是存放這兩個檔案的目錄。目錄必須已經存在,並且命令的使用者有對檔案的特權。
--fields-enclosed-by= char 指定文字檔案中資料的記錄時以什麼括起的, 很多情況下 資料以雙引號括起。 預設的情況下資料是沒有被字元括起的。
--fields-terminated-by=char 指定各個資料的值之間的分隔符,在句號分隔的檔案中, 分隔符是句號。您可以用此選項指定資料之間的分隔符。 預設的分隔符是跳格符(Tab)
--lines-terminated-by=str 此選項指定文字檔案中行與行之間資料的分隔字串 或者字元。 只匯出資料時,預設的情況下mysqldump以newline為行分隔符。 您可以選擇用一個字串來替代一個單個的字元: 一個新行或者一個回車。

-w "WHERE Clause" or -where = "Where clause "
如前面所講的,您可以使用這一選項來過篩選將要放到 匯出檔案的資料。

假定您需要為一個表單中要用到的帳號建立一個檔案,經理要看今年(2004年)所有的訂單(Orders),它們並不對DDL感興趣,並且需要檔案有逗號分隔,因為這樣就很容易匯入到Excel中。 為了完成這個人物,您可以使用下面的句子:
bin/mysqldump –p –where "Order_Date >='2000-01-01'"
–tab = /home/mark –no-create-info –fields-terminated-by=, Orders
這將會得到您想要的結果。

第四種,使用SELECT INTO OUTFILE備份資料.

進入mysql命令客戶端,輸入以下命令
SELECT * INTO OUTFILE '/home/mark/Orders.txt'
FIELDS
TERMINATED BY = ','
FROM Orders
WHERE Order_Date >= '2000-01-01'
在你按了Return(回車)之後,檔案就建立了。這個句子就像一個規則的SELECT語句,只是把想螢幕的輸出重定向到了檔案中。這意味這您可以使用JOIN來實現多表的高階查詢。這個特點也可以被用作一個報表產生器。這裡也可以使用fields_enclosed-by= char,fields-terminated-by=char,lines-terminated-by=str 對匯出的資料進行規劃.