网站建设知识
mysqldump备份之(一)
2025-07-22 10:01  点击:0

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

++++++++++++++++++++++