mysqldump常用于MySQL数据库逻辑备份,导出数据库表的结构和内容。
常用参数
-A, --all-databases
导出所有数据库
--add-drop-database
在创建数据库之前先DROP数据库
--add-drop-table
在创建表之前先drop表,默认true
--add-locks
在insert语句前加锁,默认true
--compact
导出更少的输出信息(用于调试)。去掉注释和头尾等结构
-c, --complete-insert
使用完整的insert语句(包含列名称)。
-B, --databases
导出几个数据库。参数后面所有名字参量都被看作数据库名。导出文件中会有'USE db_name;'
--default-character-set=name
设置默认字符集
-e, --extended-insert
使用具有多个VALUES列的INSERT语法。这样使导出文件更小,并加速导入时的速度,默认true
**--ignore-table=name **
忽略指定的表不导出
--insert-ignore
在插入行时使用insert ignore
-l, --lock-tables
开始导出前,锁定所有表
--dump-slave
将主库的binlog位置和文件名追加到导出数据的文件中,该参数在在从服务器上执行,相当于执行show slave status.当设置为1时,将会以CHANGE MASTER命令输出到数据文件;设置为2时,会在change前加上注释。
--master-data[=#]
该选项将当前服务器的binlog的位置和文件名追加到输出文件中(show master status)。如果为1,将会输出CHANGE MASTER 命令;如果为2,输出的CHANGE MASTER命令前添加注释信息。
-n, --no-create-db
只导出数据,不添加create database语句,默认false
-t, --no-create-info
只导出数据,不添加create table语句,默认false
-d, --no-data
不导出任何数据,只导出数据库表结构
-q, --quick
不缓冲查询,直接导出到标准输出。默认true
**--replace **
插入数据时用replace
--set-gtid-purged[=name]
是否添加SET@@GLOBAL.GTID_PURGED,默认auto
--single-transaction
使用一致性的快照来导出数据,不锁表,默认false
--tables
覆盖--databases (-B)参数,指定需要导出的表名
-w, --where=name
按照条件导出,只能导出单个表
-u -h -P -p
用户名,主机名,端口,密码
常用方法
1、导出所有库
mysqldump -uroot -p123 --single-transaction --all-databases >all.sql
该命令会导出包括系统数据库在内的所有数据库
2、导出单个库
mysqldump -uroot -p123 --single-transaction test > test.sql
3、导出多个数据库
mysqldump -uroot -p123 --single-transaction --databases db1 db2> db.sql
导出文件中会有'USE db1;USE db2'
4、导出单表
mysqldump -uroot -p123 --single-transaction test table_1 > table_1.sql
5、导出多表
mysqldump -uroot -p123 --single-transaction test --tables table_1 table_2> table.sql
6、只导表结构
mysqldump -uroot -p123 --single-transaction test -d > test_structure.sql
7、只导出数据
mysqldump -uroot -p123 --no-create-info --single-transaction --skip-add-locks --compact -c --set-gtid-purged=OFF test t2 >t2.sql
8、按照where条件导出
mysqldump -uroot -p123 --single-transaction test table_1 -w "id<1000000" > table_1.sql