mysqldump導入導出參數
阿新 • • 發佈:2018-08-01
取消 錯誤 前綴 lena 備份文件 action add 選項 表結構 mysqldunp常用參數:--single-transaction 和 --master-data=2
導出整個數據庫(包括數據庫中的數據)
mysqldump -u username -p dbname > dbname.sql
導出某些庫
mysqldump -uusername -ppassword --databases db1 db2 > db1db2.sql
導出數據庫結構(不含數據)
mysqldump -u username -p -d dbname > dbname.sql
導出數據庫中的某張數據表(包含數據)
mysqldump -u username -p dbname tablename > tablename.sql
導出數據庫中的某張數據表的表結構(不含數據)
mysqldump -u username -p -d dbname tablename > tablename.sql
將備份文件壓縮:
mysqldump -hhostname -uusername -ppassword --databases dbname | gzip > backup-file.sql.gz
導入數據庫:
mysql> use target_dbname
mysql> source /mysql/backup/path/backup-file.sql
或
mysql target_dbname <backup-file.sql
用mysql命令恢復
mysql -uroot -ppassword db_name < /backup/mysql_bak.sql
如果是壓縮的
mysql -uroot -ppassword db_name < `gzip -d /backup/mysql_bak.sql.gz`
for MyISAM
mysqldump --user=root --all-databases --flush-privileges --lock-all-tables \
--master-data=1 --flush-logs --triggers --routines --events \
--hex-blob >$BACKUP_DIR/full_dump_$BACKUP_TIMESTAMP.sql
for InnoDB
mysqldump --user=root --all-databases --flush-privileges --single-transaction \
--master-data=1 --flush-logs --triggers --routines --events \
--hex-blob >$BACKUP_DIR/full_dump_$BACKUP_TIMESTAMP.sql
mysqldump常用參數說明:
–user, -u
指定連接的用戶名。
–password, -p
連接數據庫密碼
–host, -h
指定要連接的服務器名。
–port, -P
連接數據庫端口號
--complete-insert, -c
使用完整的insert語句(包含列名稱)。這麽做能提高插入效率,但是可能會受到max_allowed_packet參數的影響而導致插入失敗。
--add-drop-table
每個數據表創建之前添加drop數據表語句。(默認為打開狀態,使用--skip-add-drop-table取消選項)
–default-character-set
設置默認字符集,默認值為utf8
–all-databases , -A
導出全部數據庫
–databases, -B
導出幾個數據庫。參數後面所有名字參量都被看作數據庫名。
--tables
覆蓋--databases (-B)參數,指定需要導出的表名。
--no-create-db, -n
只導出數據,而不添加CREATE DATABASE 語句。
–no-data, -d
不導出任何數據,只導出數據庫表結構。
--no-create-info, -t
只導出數據,不導結構。
--force
在導出過程中忽略出現的SQL錯誤。類似Oracle exp命令中的ignore參數。
--flush-logs
開始導出之前刷新日誌。如果是全庫導出,建議先刷新日誌文件,否就不用了。請註意:假如一次導出多個數據庫(使用選項--databases或者--all-databases),將會逐個數據庫刷新日誌。除使用--lock-all-tables或者--master-data外。在這種情況下,日誌將會被刷新一次,相應的所以表同時被鎖定。因此,如果打算同時導出和刷新日誌應該使用--lock-all-tables 或者--master-data 和--flush-logs。
--where, -w
只導出符合條件的記錄。如果條件包含命令解釋符專用空格或字符,一定要將條件引用起來。
--single-transaction
該選項在導出數據之前提交一個BEGIN SQL語句,BEGIN 不會阻塞任何應用程序且能保證導出時數據庫的一致性狀態。它只適用於多版本存儲引擎,僅InnoDB。本選項和--lock-tables 選項是互斥的,因為LOCK TABLES 會使任何掛起的事務隱含提交。要想導出大表的話,應結合使用--quick 選項。
--flush-logs , -F
在開始導出前刷新服務器的日誌文件。註意,如果你一次性導出很多數據庫(使用 -databases=或--all-databases選項),導出每個庫時都會觸發日誌刷新。例外是當使用了--lock-all-tables或--master-data時:日誌只會被刷新一次,那個時候所有表都會被鎖住。所以如果你希望你的導出和日誌刷新發生在同一個確定的時刻,你需要使用--lock-all-tables,或者--master-data配合--flush-logs。
--master-data
這個選項可以把binlog的位置和文件名添加到輸出中,如果等於1,將會打印成一個CHANGE MASTER命令;如果等於2,會加上註釋前綴。並且這個選項會自動打開--lock-all-tables,除非同時設置了--single-transaction(這種情況下,全局讀鎖只會在開始dump的時候加上一小段時間,不要忘了閱讀--single-transaction的部分)。在任何情況下,所有日誌中的操作都會發生在導出的準確時刻。這個選項會自動關閉--lock-tables。
-x, --lock-all-tables
鎖定所有庫中所有的表。這是通過在整個dump的過程中持有全局讀鎖來實現的。會自動關閉--single-transaction和--lock-tables。
--routines, -R
導出存儲過程以及自定義函數。
--replace
使用REPLACE INTO 取代INSERT INTO
mysqldump導入導出參數