一.概述 mysqldump客戶端工具是用來備份資料庫或在不同資料庫之間進行數據遷移。備份內容包含創建表或裝載表的sql語句。mysqldump目前是mysql中最常用的備份工具。 三種方式來調用mysqldump,命令如下: 上圖第一種是備份單個資料庫或者庫中部分數據表(從備份方式上,比sqlse ...
一.概述
mysqldump客戶端工具是用來備份資料庫或在不同資料庫之間進行數據遷移。備份內容包含創建表或裝載表的sql語句。mysqldump目前是mysql中最常用的備份工具。
三種方式來調用mysqldump,命令如下:
上圖第一種是備份單個資料庫或者庫中部分數據表(從備份方式上,比sqlserver要靈活一些,雖然sql server有文件組備份)。第二種是備份指定的一個或者多個資料庫。第三種是備份所有資料庫。
1.連接導出,下麵將test資料庫導出為test.txt文件,導出位置在data目錄下
[root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p test > test.txt
上圖顯示: 導出到test.txt文件里, 數據有幾部份sql語句,包括:(1)有判斷表存在刪除,(2)導出表結構和表數據,(3)導前加table write鎖,導完釋放。通過下麵幫助命令可以看到預設設置。
[root@hsr data]# /usr/local/mysql/bin/mysqldump --help
2. 輸出內容選項
-n, --no-create-db |
不包含資料庫的創建語句 |
-t, --no-create-info |
不包含數據表的創建語句 |
-d,--no-data |
不包含數據 |
下麵演示導出test庫的a表,不包含數據:
[root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p -d test a > a.txt
上圖顯示,使用more 查看a.txt,內容只有表結構。
3. 使用 --compact選項使得結果簡潔,不包括預設選項中的各種註釋,下麵還是演示a表:
[root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p --compact test a > a.txt
4. 使用-c --complete-insert 選項,使insert語句包括欄位名稱
[root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p -c --complete-insert test b > b.txt
5. 使用-T選項將指定數據表中的數據備份為單純的數據文本和建表sql, 兩個文件。
[root@hsr data]# midir bak [root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p test b -T ./bak Enter password: mysqldump: Got error: 1290: The MySQL server is running with the --secure-file-priv option so it cannot execute
this statement when executing 'SELECT INTO OUTFILE'
--上面的語句報錯,查找錯誤信息中的欄位設置 SHOW VARIABLES LIKE '%secure%';
secure-file-priv參數是用來限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()傳到哪個指定目錄的。
(1) 當secure_file_priv的值為null ,表示限制mysqld 不允許導入|導出。
(2) 當secure_file_priv的值為/tmp/ ,表示限制mysqld 的導入|導出只能發生在/tmp/目錄下。
(3 )當secure_file_priv的值沒有具體值時,表示不對mysqld 的導入|導出做限制。
下麵來設置my.cnf文件,加上導入位置,位置在/tmp 目錄下,如下圖:
-- 再次導出,導出路徑在/tmp下
[root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p test b -T /tmp
使用more 查看文件,b.sql中包含了表架構, b.txt包含數據。
6. 字元集選項
--default-character-set=name 選項可以設置導出的客戶端字元集。這個選項很重要,如果客戶端字元集和資料庫字元集不一致,有可能成為亂碼,使得備份文件無法恢復。
[root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p --compact --default-character-set=utf8 test >test.txt
7. 其他常用選項
(1) -F --flush-logs(備份前刷新日誌) 備份前將關閉舊日誌,生成新日誌。恢復的時候直接從新日誌開始進行重做,方便恢復過程。
(2) -l --lock-tables(給所有表加讀鎖) 使得數據無法被更新,從而使備份的數據保持一致性(可以導致大量長時間阻塞)。