mysqldump 使用備忘

語法

導出全部數據庫:

mysqldump -u root -p -A > backupfile.sql

導出指定數據庫:

mysqldump -u root -p -B dbName1 dbName2 > backupfile.sql

導出指定表:

mysqldump -u root -p -B dbName tableName1 tableName2 > backupfile.sql

只導出表結構:

mysqldump -u root -p -A -d > backupfile.sql

命令示例

mysqldump -u root -p databaseName tableName -t --insert-ignore -e --max_allowed_packet=2097152 --net_buffer_length=16384 > backupfile.sql;

解釋:

  • -A(--all-databases):導出所有數據庫;
  • -B(--databases):導出指定數據庫,後邊可跟多個參數;
  • -t(--no-create-info):不導出創表的語句。不加參數是默認導出建表語句(先drop table而後create table);
  • -d(--no-data):不導出任何數據,只導出數據庫表結構;
  • --insert-ignore:導出的insert語句加上ignore,容許重複執行。默認不會加上ignore;
  • -e(--extended-insert):使用具備多個VALUES列的INSERT語法。這樣使導出文件更小,並加速導入時的速度。默認爲打開狀態,使用--skip-extended-insert取消選項;
  • --max_allowed_packet:客戶端/服務器之間通訊的緩存區的最大大小;
  • --net_buffer_length:TCP/IP和套接字通訊緩衝區大小,建立長度達net_buffer_length的行。
  • --single-transaction:該選項在導出數據以前提交一個BEGIN SQL語句,BEGIN 不會阻塞任何應用程序且能保證導出時數據庫的一致性狀態。它只適用於多版本存儲引擎,僅InnoDB。本選項和--lock-tables 選項是互斥的,由於LOCK TABLES 會使任何掛起的事務隱含提交。要想導出大表的話,應結合使用--quick 選項。

注意

max_allowed_packet 和 net_buffer_length 不能比目標數據庫的設定數值大,不然可能出錯。html

肯定目標數據庫的參數值的方法:mysql

mysql> show variables like 'max_allowed_packet';
mysql> show variables like 'net_buffer_length';

參考

  1. http://www.rover12421.com/2013/01/10/mysql-big-data-fast-import-and-export.html
  2. http://codingstandards.iteye.com/blog/1522622
  3. http://segmentfault.com/blog/koy/1190000000621104
相關文章
相關標籤/搜索