mysql 備份與還原(一)

2021-07-22 22:52:20 字數 2082 閱讀 5367

1. 使用mysqldump備份

在mysql安裝目錄下 bin/下輸入已下命令

1.1 匯出資料庫的指定表

mysqldump

-uusername

-ppassword

database

[table]

[table2] > file_path

1.2 只匯出表結構 -d

mysqldump -u username -ppassword

-d database [table]

[table2]

> file_path

1.3 匯出所有資料庫 –all-databases

mysqldump -u username -ppassword

--all

-databases

> file_path

1.4 匯出多個資料庫 –databases

mysqldump -u username -ppassword

--databases dbname dbname2 > file_path

1.5 匯出多個庫的多個指定表

系統正常執行過程中,很可能會不斷有資料變更的請求正在執行,這樣就可能造成在mysqldump備份出來的資料不一致。也就是說備份資料很可能不是同乙個時間點的資料, 而且甚至可能都沒辦法滿足完整性約束。這樣的備份集對於有些系統來說可能並沒有太大問題, 但是對於有些對資料的一致性和完整性要求比較嚴格系統來說問題就大了,就是乙個完全無效的備份集。

對於如此場景,我們該如何做?我們知道,想資料庫中的資料一致,那麼只有兩種情況

下可以做到。

第一、同一時刻取出所有資料;

第二、資料庫中的資料處於靜止狀態

《mysql效能調優與架構設計》該書提供了兩種解決方案,

第一種可以使用事物來做到模擬同一時刻取出資料,這要求儲存引擎支援事物 ,例如innodb ,通過–single-transaction引數,如:

mysqldump -u username -ppassword

--all

-databases

--single-transaction

> file_path

第二種則為將資料在備份時對錶進行鎖定,僅提供查詢服務,通過引數 –lock-tables 和 –lock-all-tables 如:

mysqldump-u

username

-ppassword-d

database

[table][

table2]-

-lock

-tables> file_path

mysqldump-u

username

-ppassword-d

--all-

databases--

lock

-all

-tables > file_path

這兩者的區別在於 前者一次只會鎖定乙個資料庫的表,對於多個資料庫同時備份,則需要使用後者。

2.匯入備份

2.1 匯入備份的 過程比較簡單,首先登陸mysql,然後再輸入如下命令

source file_path;
2.2 若想一次匯入多個檔案,可以新增add_more.sql指令碼如下:

add_more.sql檔案中寫入要執行的檔案 :

source file_path1 ;

source file_path2 ;

......

然後執行 add_more.sql,同2.1 :

source add_more.sql;
3.邏輯備份的優點

3.1 恢復備份資料時不會影響不相關資料

3.2 通過全庫的邏輯備份,可以在新的環境下重建相同的資料庫

3.3 可以選取恢復想要的一部分資料而不是全部恢復

mysql備份與還原

假設mysql 安裝在c 盤,mysql資料庫的使用者名稱是root,密碼是123456,資料庫名是database name,在d 盤根目錄下面存放備份資料庫,備份資料庫名字為backup20070713.sql。備份資料庫 mysqldump uroot p123456 database nam...

mysql備份與還原

備份檔案 檔案開頭記錄了mysql的版本 備份的主機名和資料庫名。檔案中,以 開頭的的都是sql語言的注釋 不會被執行 但是,以 40101 等形式開頭 的是與mysql有關的注釋。40101 是mysql資料庫的版本號,這裡就表示mysql 4.1.1 如果還原資料時,mysql的版本比4.1.1...

mysql備份與還原

工作中用到了mysql,在這裡做個備忘記錄 1 備份 匯出整個資料庫database mysqldump u root p database dump.sql 只匯出表結構 mysqldump u root p d database dump.sql 匯出單個資料表table mysqldump a...