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 不能比目标数据库的设定数值大,否则可能出错。

确定目标数据库的参数值的方法:

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

你可能感兴趣的:(mysqldump)