mysql之使用mysqldump 进行数据导出
jmysqldump是mysql官方自带的逻辑备份的工具。支持以多个维度对数据库进行备份,如全库备份、单库备份、表备份、按表的过滤条件备份等。mysqldump支持将数据转换成标准的insert sql语句,也支持按照特定的分割符分割的文件,如csv、xml等。
mysqldump 连接用户需要的权限
select、
show view(导出视图)、
trigger(导出触发器)、
Lock tables(如果没有使用--single-transaction,默认需要lock table)
mysql常用参数
类型 | 参数 | 作用 |
---|---|---|
帮助参数 | -? [--help] | 显示帮助信息 |
连接参数 | -u [--user] | 用户 |
-p [password] | 密码 | |
-h [--host] | 主机域名或ip | |
-P [--Port] | 端口 | |
DDL参数 | --add-drop-table | 在每个CREATE TABLE语句之前写一个DROP TABLE语句 |
--add-drop-database | 在每个CREATE DATABASE语句之前写一个DROP DATABASE语句,该选项通常与--all-databases或--databases选项一起使用,除非指定了其中一个选项,否则不会写入。 | |
格式参数 | --compact | 产生更紧凑的输出。该选项启用:--skip-add-drop-table、--skip-add-locks、--skip-comments、--skip-diasbles-keys 和 --skip-set-charset选项。 |
导出数据控制参数 | -A [--all-databases] | 导出所有数据库 |
-B [--databases ] | 导出指定的单个或多个数据库 | |
--tables | 参数值的格式为"db_name table_name | |
-w [--where] | 指定导出的条件 | |
--ignore-table | 指定表不导出,参数值格式:--ignore-table=db_name.tbl_name 不要导出指定的表,它必须同事使用数据库名和表名来指定。要忽略多个表,需要多次使用此选项。 | |
-d [--no-data] | 只导出表结构,不导行数据 | |
-t [--no-create-info] | 只导行数据,不导表结构 | |
--insert-ignore | 以insert ignore的方式导出信息,导入时如果目标表有冲突则会被忽略 | |
锁控制参数 | -l [--lock-tables] | 在对象导出期间,会锁定该对象,此时其它会话无法对该表进行写入操作,默认启用。可以使用--skip-lock-tables关闭。 |
--single-transaction | 该选项会将事务隔离级别设置为RR,并在导出数据之前设置start transation语句。这个参数和--lock-tables是互斥的。这个参数可以用来保证导出一致性数据。 | |
其他参数 | --force | 在导出导入过程中,如果遇到错误,继续执行 |
--set-gtid-purged=value | 该参数控制是否添加SET @@GLOBAL.gtid_purged
到输出文件中。这个参数还可能在输出文件中写入 SET @@SESSION.SQL_LOG_BIN = 0;
,这意味着在此会话中对数据库所做的任何后续更改都不会记录在二进制日志文件中。该参数默认值是:auto。 | |
--quick | 该参数控制mysqldump从服务器检索表的行数据,每次一行,而不是检索整个数据集并将其缓存在内存中,这对于导出大表比较有用。 |
生产环境使用建议:
- --lock-tables:该参数是默认开启的,也就是导出期间,会锁定该表(可以在审计日志中看到LOCK TABLES table_name READ *!32311 LOCAL */这样的信息),导致导出期间不能对表进行写入,生产环境导出注意一定要关闭这个参数,方法:指定--skip-lock-tables。
- --single-transaction:用来创建一致性快照。生产环境建议开启。
- --set-gtid-purged: 当这个参数打开时,mysqldump会在输出文件中写入
SET @@SESSION.SQL_LOG_BIN = 0;
,这意味着在此会话中对数据库所做的任何后续更改都不会记录在binlog中。若还原时服务器架构是主从架构,还需要在从库还原一次,否则主从数据库将不同步。所以导出时建议将这个参数设置为off。 - --compact:参数更紧凑的输出,可以减少一些注释等信息。建议开启。
使用示例
1.导出所有数据库(全库备份)
mysqldump -uuser -ppassword -hhost -Pport --all-databases --single-transaction --set-gtid-purged=off --compact --skip-lock-tables> backup.sql<br>