语法
导出所有数据库:
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';
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。