天天看點

MySQL 5.1 mysqldump導出備份

最近在工作的時候,要将原來在本機開發的 MySQL存儲過程遷往另一Linux作業系統下的MySQL資料庫,因為表結構等已經在目标資料庫中存在了, 不想直接拷貝資料庫過去,是以用到了 MySQL的存儲過程導出和導入,經上網搜尋發現用Mysqldump工具可以實作,具體用法為:

 [root@localhost bin]# mysqldump -uroot -p -hlocalhost -P3306 -n -d -t -R DBName > procedure_name.sql

參數說明:

-n:   --no-create-db (沒有建立資料庫的資訊)

-d:   --no-data     (不導出資料)

-t:   --no-create-info (沒有建立資料庫表的資訊)

-R:   --routines      Dump stored routines (functions and procedures)

-E:  --events  (導出資料庫中events)

-A:  --all-databases (導出所有的資料庫)

-B:  --databases db1 db2 (導出指定的資料庫)

    Mysqldump是用戶端工具用來備份資料庫或在不同資料庫之間進行資料遷移。備份内容包含建立活裝載表的SQL語句:

主要參數介紹:

1.連接配接選項

  -u,--user=name

  -p,--password=name

  -h,--host=name

  -P,--port=#

2.輸出内容選項

 --add-drop-database (預設是自動加上的)

 --add-drop-table     (預設是自動加上的)

 -n;--no-create-db

 -d;--no-data

 -t;--no-create-info

3.輸出格式選項

--compact (精簡格式,将導出時的一些備注省略)

-c --complete-insert (導出資料的語句中,在insert to table values後加上各個字段,如insert into table(tab1,tab2,…) values(value1,value2,…))

-T(指定資料表中的資料備份為單純的資料檔案和建表SQL兩個檔案)

在mysqldump幫助文檔中的說明:

-T, --tab=name      Creates tab separated textfile for each table to given

                           path. (creates .sql and .txt files).<b> NOTE: This only</b>

                          works if mysqldump is run on the same machine as the

                           mysqld daemon.

這裡提示,使用-T參數時必須保證運作mysqldump指令的用戶端必須與mysqld伺服器執行個體在同一台機器上。

經 測試可知xx.sql建表檔案是以linux的root使用者建立,而xx.txt檔案則是以linux的mysql使用者建立,是以xxx.txt檔案的存 放路徑一定要保證mysql使用者有讀寫建立檔案的權限。在遠端利用-T備份mysql的表時是不允許的,如果你非的這麼使用你會發現在本地僅僅會建立 xxx.sql檔案,而xxx.txt檔案則沒有,它有可能在遠端運作mysqld的伺服器上出現(僅僅是可能,保證遠端運作mysqld的linux服 務器和本地linux有相同的路徑和使用者權限)。

--fields-terminated-by=name(域分隔符)

--fields-enclosed-by=name(域引用符)

--fields-optionally-enclosed-by=name(域引用可選字元)

--fields-escaped-by=name(轉義字元)

域引用符和域引用可選字元在一次導出中不能同時使用,域引用可選字元隻對認為需要引用的字段作引用,而域引用符對所有的字段都要作引用。

4.字元集選項

--default--character-set=xx

5.其他選項

-F --flush-logs(備份前重新整理日志)

-l --lock-tables(給所有的表加讀鎖)

本文轉自 yubowei 51CTO部落格,原文連結:http://blog.51cto.com/samyubw/223777