【小白福利—初級DBA入門必看】MySQL常用工具介紹(七)——客戶端工具MySQL_dump

從開始更新MySQL常用工具這篇文章到現在已經進入第七節了(點擊查看系列文章),相信大家對MySQL常用工具已經有一個清楚的瞭解了,感謝大家的持續觀看,Amy會繼續爲大家帶好有深度的好文章哦~

1 . 簡介

mysqldump執行邏輯備份,生成sql語句集。用該語句集可以重建原數據庫的對象定義和表數據。也可以生成csv或其它分隔符文本、xml格式。
mysqldump至少要select權限以導出表,show view以導出視圖,trigger以導出triggers,如果不使用–single-transaction選項還需lock tables權限。
導入mysqldump輸出,需執行語句的相關權限,如create table,insert等。mysqldump輸出可以包含alter database語句,則導入該輸出則需要alter權限。
一般調用方式:
shell> mysqldump [options] db_name [tbl_name …] #表級備份,即便省略tbl_name來進行庫內所有表的備份,依舊不會有create database語句。
shell> mysqldump [options] --databases db_name … #數據庫級備份
shell> mysqldump [options] --all-databases #數據庫級備份,不備份性能庫、信息庫、sys
選項讀取[mysqldump]和[client]組。

2 . 選項介紹與部分選項舉例說明

#注意:這裏的默認值,不是使用“程序名 --no-defaults --help”打印的輸出,而是指未指定時內部初始值,該值可被自身選項顯示指定,也可能會受其他互斥選項、相關選項更改。這裏只寫出默認啓用的布爾型選項,以及有內部值的其他選項。有內部值的選項可以不顯示給出。
2.1 所有客戶端共有選項
2.1.1 影響選項文件讀取的選項

在這裏插入圖片描述
2.1.2 幫助與版本
在這裏插入圖片描述
2.1.3 連接的建立
在這裏插入圖片描述
在這裏插入圖片描述
連接方式參數說明:優先級–protocol>–pipe>-h;
linux兩種連接方式:若未指定–host和-h,或指定爲localhost,或指定爲空(–host=或–host=’’),則使用unix套接字;否則使用tcp/ip。
windows三種連接方式:若未指定–host和-h,或指定爲localhost,且服務端開啓了共享內存,則使用共享內存;若指定爲.,或tcp禁用且socket未指定或主機指定爲空(–host=),則使用命名管道;否則tcp。
連接方式舉例
全平臺使用tcp/ip:
mysql --protocol=tcp [-h127.0.0.1] [–port=3306]
mysql -h127.0.0.1 [–port=3306]

unix使用socket:
mysql [–host=localhost] [–socket=/tmp/mysql.sock]

windows使用命名管道:需在服務端開啓命名管道支持
mysql --protocol=pipe
mysql --pipe
mysql --host=.

windows使用共享內存:未知,存在問題。理論上應當在服務上開啓共享內存後使用
mysql [–host=localhost] --shared-memory-base-name=MYSQL,但是實際上使用的tcp,或者
mysql --protocol=memory --shared-memory-base-name=MYSQL,但是會報錯ERROR 2046 (HY000): Can’t open shared memory; cannot send request event to server (5);

2.1.4 字符集
在這裏插入圖片描述
2.1.5 調試日誌
在這裏插入圖片描述
2.2 mysqldump特定選項
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

3 . 限制

mysqldump默認不導出INFORMATION_SCHEMA,performance_schema, sys。要導出時需用–databases指定。對於性能表和信息表,還需使用–skip-lock-tables。
mysqldump不導出ndb集羣信息庫ndbinfo。
mysqldump不導出innodb的CREATE TABLESPACE 語句。
不推薦將mysqldump的輸出重載到5.6.9及之前開啓gtid的版本。
mysqldump導出mysql時包含general_log和slow_query_log表結構,但不導出數據。
若遇到關於視圖的權限問題,參考Section C.5, “Restrictions on Views”。

4 . 常見用法舉例:

省略連接選項,用戶可自定義tab、xml輸出格式
可以開啓–single-transaction保證事務表的一致性,對於導出期間非事務性表沒有更改的情況,還能保證整體的一致性。

4.1 全庫備份(不備份信息、性能、sys庫):
mysqldump --all-databases > filename #表級讀鎖,不保證庫間一致性
mysqldump --all-databases --lock-all-tables [-no-data]> filename #全局讀鎖,保證庫間一致性.–no-data可以只導出結構。
mysqldump --all-databases --master-data > filename #全局讀鎖,保證庫間一致性
mysqldump --all-databases --master-data --single-transaction > filename #熱備,在一個事務內導出數據,保證innodb數據庫一致性

4.2 庫級備份:
mysqldump --databases sakila > filename #表級讀鎖,保證庫內一致性,導出觸發器、視圖,不包括routines、events
mysqldump --databases sakila --routines --events > filename #表級讀鎖,保證庫內一致性,導出觸發器、視圖,包括routines、events
mysqldump --databases sakila mysql > filename #表級讀鎖,保證庫內一致性,導出觸發器、視圖,因爲導出mysql庫,則自然包括routines、events

4.3 表級備份:
mysqldump sakila > filename #表級讀鎖,保證庫內一致性,導出觸發器
mysqldump sakila city actor > filename #表級讀鎖,保證庫內一致性,導出觸發器.

以上就是今天更新的內容,歡迎大家踊躍轉發點贊哦~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章