您的位置:首页 > 数据库 > MySQL

mysqldump备份之SQL格式

2016-11-17 21:31 106 查看
7.4 使用mysqldump进行备份
---------------------
dump file:
可以作為數據備份,以防止數據丟失;
主從複製的時候可以作為數據源;
可以用來做實驗:
作為數據庫的拷貝而不需要改動原來的數據;
測試可能的升級兼容性
根據是否指定--tab選項,mysqldump的輸出有2種類型
1、沒有--tab,mysqldump將SQL語句寫到標準輸出。
輸出由CREATE語句(創建dumped 對象-數據庫、表等等)和SELECT語句(將數據加載到表裡邊)組成;
可以把輸出保存到文件裡邊,之後可以讓mysql重建dumped 對象;
有一些選項可以用於修改SQL語句的格式、控制哪些對象需要dump;
2、使用了--tab選項,mysqldump為每一個dumped的表創建2個輸出文件;
服務器將寫一個tab-delimited text file(製表符分割文本文件)--“表中每一行數據占一行的文件”;這個文件被命名為tbl_name.txt,放到輸出目錄;
服務器也會為mysqldump操作的表發送一條CREATE TABLE 語句,這條語句將會在輸出目錄創建一個名為tbl_name.sql的文件;

7.4.1 使用mysqldump將數據以SQL格式進行dump
++++++++++++++++++++++
在默認情況下,mysqldump將以SQL格式將信息寫到標準輸出;我們可以將輸出保存到文件裡邊;
shell> mysqldump [arguments] > file_name

使用--all-databases選項來dump所有的數據庫:
shell> mysqldump --all-databases > dump.sql

使用--databases選項來dump指定的數據庫:
shell> mysqldump --databases db1 db2 db3 > dump.sql
--databases這個選項是的命令行中的所有名字(上面這個例子中:db1 db2 db3)都被當做數據名;
如果不指定這個選項,命令行中的第一個名字(上面這個例子中的db1)被當做數據庫的名字,其他的(上面這個例子中的db2和db3)被當做表的名字;

使用了--all-databases或者--databases選項的時候,對於每一個操作到的數據,mysqldump在dump output之前會寫CREATE DATABASE和USE語句;
這樣可以保證在重新載入dumped文件的時候,如果數據庫不存在,那麼將會被創建;
並且將它作為默認的數據庫,這樣數據就會被重新載入到對應的數據(就是說,保證了數據從哪個數據來還到哪個數據庫去)

如果想要在重建數據庫之前強制刪除每一個數據庫,使用--all-drop-databases選項;
這樣的話,mysqldump在每一個CREATE DATABASE語句之前寫一個DROP DATABASE語句;

想要dump某一個數據庫,可以在命令行指定它的名字:
shell> mysqldump --databases test > dump.sql

對於只dump一個數據庫的情況,--all-databases選項可以省略掉:
shell> mysqldump test > dump.sql
在這種情況下,dump的輸出文件裡邊沒有CREATE DATABASE和USE語句,這樣做有下面這些影響:
1、在重新載入的時候,我們必須指定一個數據庫,這樣,服務器才知道將數據導入到哪一個數據庫;
2、在重新載入的時候,指定的數據庫名字可以和之前(導出的時候)的數據庫名字不一樣;
3、如果導入數據的時候,數據庫不存在,我們必須先創建出來;
4、因為沒有了CREATE DATABASE語句,所以--all-drop-databases選項就沒用;如果使用的話,將不會生成DROP DATABASE語句;

如果只是想要dump出某一個數據的指定的表,可以在命令行中,將表的名字寫到數據庫後面:
shell> mysqldump test t1 t3 t7 > dump.sql

7.4.2 重新載入SQL格式的備份數據
++++++++++++++++++++++
想要重新載入由mysqldump寫的由SQL語句組成的dump文件的時候,將這個文件作為mysql客戶端的輸入;
如果dump文件是使用--all-databases或者--databases選項創建的,它會包含CREATE DATABASE和USE語句,那麼我們導入dump文件的數據的時候就不用指定數據庫;

shell> mysql < dump.sql
另一種可選方法,進入mysql,使用source命令:
mysql> source < dump.sql

如果dump的文件是一個“單數據庫”(沒喲CREATE DATABASE和USE語句),可能需要先創建數據庫:
shell> mysqladmin create db1
shell> mysql db1 < dump.sql
另一種可選的方法:
mysql> CREATE DATABASE IF NOT EXISTS db1;
mysql> USE db1;
mysql> source dump.sql

++++++++++++++++++++++
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息