您好,登錄后才能下訂單哦!
mysqldump
是mysql自帶的數據庫備份工具
,屬于單線程
,大部分生產環境的mysql數據庫備份都是使用該工具,mysqldump可以將數據導出為原生sql語句,在將其數據導入至數據庫時,相當于是執行一遍備份文件中的所有sql語句,
mysqldump
提供了豐富的options選項
,可以在導出或者導入數據
的時候,添加需要的options
,以便達到用戶預期的效果
mysql常用參數
// 導出全部數據庫。
// --all-databases , -A
mysqldump -uroot -p --all-databases
// 導出全部表空間。
// --all-tablespaces , -Y
mysqldump -uroot -p --all-databases --all-tablespaces
// 不導出任何表空間。
// --no-tablespaces , -y
mysqldump -uroot -p --all-databases --no-tablespaces
// 導出幾個數據庫。參數后面所有名字參量都被看作數據庫名。
// --databases, -B
mysqldump -uroot -p --databases [數據庫名1] [數據庫名2]
// 每個數據庫創建之前先添加drop數據庫語句(如有原庫則先drop后再重新create)。
// --add-drop-database
mysqldump -uroot -p --all-databases --add-drop-databas
// 每個數據表創建之前先添加drop數據表語句。(默認為打開狀態,使用--skip-add-drop-table取消選項)。
// --add-drop-table
mysqldump -uroot -p --all-databases (默認添加drop語句)
mysqldump -uroot -p --all-databases –skip-add-drop-table (取消drop語句)
// 設置默認字符集,默認值為utf8。
// --default-character-set
mysqldump -uroot -p --all-databases --default-character-set=latin1
// 使用十六進制格式導出二進制字符串字段。如果有二進制數據就必須使用該選項。影響到的字段類型有BINARY、VARBINARY、BLOB。
// --hex-blob
mysqldump -uroot -p --all-databases --hex-blob
// 使用具有多個VALUES列的INSERT語法。這樣使導出文件更小,并加速導入時的速度。默認為打開狀態,使用--skip-extended-insert取消選項。
// --extended-insert, -e
mysqldump -uroot -p --all-databases
mysqldump -uroot -p --all-databases --skip-extended-insert (取消選項)
// 使用完整的insert語句(包含列名稱)。這么做能提高插入效率,但是可能會受到max_allowed_packet參數的影響而導致插入失敗。
// --complete-insert, -c
mysqldump -uroot -p --all-databases --complete-insert
// 不緩沖查詢,直接導出到標準輸出。默認為打開狀態,使用--skip-quick取消該選項。
// --quick, -q
mysqldump -uroot -p --all-databases
mysqldump -uroot -p --all-databases --skip-quick
// 該選項在導出數據之前提交一個BEGIN SQL語句,BEGIN 不會阻塞任何應用程序且能保證導出時數據庫的一致性狀態。
// 它只適用于多版本存儲引擎,僅InnoDB。本選項和--lock-tables 選項是互斥的,因為LOCK TABLES 會使任何掛起的事務隱含提交。
// 要想導出大表的話,應結合使用--quick 選項。
// --single-transaction
mysqldump -uroot -p --all-databases --single-transaction
// 不導出指定的表。指定忽略多個表時,需要重復多次,每次一個表。每個表必須同時指定數據庫和表名。
// --ignore-table
例如:--ignore-table=database.table1 --ignore-table=database.table2 ……
mysqldump -uroot -p --all-databases --ignore-table=mysql.user
2、生產中常用的參數
注意:下面每個場景都會列出多個命令,讀者根據生產的情況來參考
1.導出單庫
mysqldump -uroot -p [數據庫名] >/backup/[導出的文件名].sql.gz
mysqldump -uroot -p [數據庫名] --single-transaction >/backup/[導出的文件名].sql.gz
mysqldump -uroot -p [數據庫名] --default-character-set=utf8 --set-gtid-purged=OFF --single-transaction >/backup/[導出的文件名].sql.gz
2.導出多個庫
mysqldump -uroot -p -B [數據庫名1] [數據庫名2] >/backup/[導出的文件名].sql.gz
mysqldump -uroot -p -B [數據庫名1] [數據庫名2] --single-transaction >/backup/[導出的文件名].sql.gz
mysqldump -uroot -p -B [數據庫名1] [數據庫名2] --default-character-set=utf8 --set-gtid-purged=OFF --single-transaction >/backup/[導出的文件名].sql.gz
3.導出單個表
mysqldump -uroot -p [數據庫名] [表名] >/backup/[導出的文件名].sql.gz
mysqldump -uroot -p [數據庫名] [表名] --single-transaction >/backup/[導出的文件名].sql.gz
mysqldump -uroot -p [數據庫名] [表名] --default-character-set=utf8 --set-gtid-purged=OFF --single-transaction >/backup/[導出的文件名].sql.gz
4.導出多個表
mysqldump -uroot -p [數據庫名] [表名1] [表名2] >/backup/[導出的文件名].sql.gz
mysqldump -uroot -p [數據庫名] [表名1] [表名2] --single-transaction >/backup/[導出的文件名].sql.gz
mysqldump -uroot -p [數據庫名] [表名1] [表名2] --default-character-set=utf8 --set-gtid-purged=OFF --single-transaction >/backup/[導出的文件名].sql.gz
5.導入和導出大表
mysqldump -uroot -p --default-character-set=utf8 --quick \
--extended-insert --single-transaction [數據庫名] |gzip >/backup/[導出的文件名].sql.gz
gzip按照需求來定,主要是對導出的sql數據的壓縮
6.過濾庫中的表后在導出
mysqldump -uroot -p --ignore-table=[數據庫名.表名1] --ignore-table=[數據庫名.表名2] >/backup/[導出的文件名].sql.gz
在過濾庫中的表后導出的數據的時候,是不需要單獨指定庫名的,只需要把需要過濾的庫下對應的表填上,它就會自動的把那些填上庫對應的表給過濾,將那些沒有被過濾的表中的數據導出到指定文件中
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。