mysqldump
是mysql自帶的數據庫備份工具
,屬於單線程
,大部分生產環境的mysql數據庫備份都是使用該工具,mysqldump能夠將數據導出爲原生sql語句,在將其數據導入至數據庫時,至關因而執行一遍備份文件中的全部sql語句,mysql
mysqldump
提供了豐富的options選項
,能夠在導出或者導入數據
的時候,添加須要的options
,以便達到用戶預期的效果sql
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
二、生產中經常使用的參數
注意:下面每一個場景都會列出多個命令,讀者根據生產的狀況來參考ide
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.導出多個庫ui
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.導出單個表spa
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.導入和導出大表code
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
在過濾庫中的表後導出的數據的時候,是不須要單獨指定庫名的,只須要把須要過濾的庫下對應的表填上,它就會自動的把那些填上庫對應的表給過濾,將那些沒有被過濾的表中的數據導出到指定文件中