mysqldump命令中,「输出过滤」选项

  LINUX MANUAL PAGES

以下选项控制将哪些类型的对象写入dump文件中:

  • 按类别:例如触发器或事件;
  • 通过名称::选择要转储的数据库和表;
  • 甚至可以使用WHERE子句从表数据中过滤行;

选项列表

–all-databases, -A
dump所有库中所有表;
等价于使用–databases选项并指定所有的库。

–databases, -B
dump指定的数据库。
通常,mysqldump将命令行上的第一个名称参数视为数据库名称,并将后跟的名称作为表名称。使用此选项,它将所有名称参数视为数据库名称。
输出内容中,会在CREATE TABLE语句前自动输出CREATE DATABASE和USE语句。
此选项可用于dump数据库INFORMATION_SCHEMA和performace_schema,因为默认情况下,即使使用了–all-databases选项也不会dump出来。
(也可以使用–skip-lock-tables选项。)

–events, -E
同时dump出事件计划(即包含CREATE EVENT语句)。需要在对应数据库上具有EVENT权限。
注意:dump的CREATE EVENT语句并不包含时间属性。如果需要原始的时间,需要使用具有权限的MySQL帐户直接dump并重新加载mysql.event表。

–ignore-error=error[,error]…
忽略指定的错误。参数列表为逗号分割的错误号,指定了要忽略的错误。
如果使用了–force选项,–force的优先级要高。
MySQL 5.7.1中添加了该选项。

–ignore-table=db_name.tbl_name
忽略指定的表,参数必须是”库名.表名”的格式。如果要忽略多个表,需要多次使用该选项。同时可以用于忽略视图。

–no-data, -d
不导出表中的数据。

–routines, -R
导出内容中包含存储过程和存储函数(CREATE PROCEDURE与CREATE FUNCTION语句)。需要对mysql.proc具有select权限。
注意:导出的语句中不包含创建及就修改时间戳。如果想保留时间戳,直接使用具有权限的MySQL帐户来dump和重新加载mysql.proc表。

–tables
用于覆盖–databases/-B选项。将该选项指定的所有名字都视为表名。

–triggers
同时dump出表中的trigger,该选项默认使启动的,使用–skip-triggers选项,忽略trigger的导出。

在MySQL 5.7.2之前,一个表不能具有触发事件(INSERT,UPDATE,DELETE)和动作时机(BEFORE,AFTER)相同组合的多个触发器。MySQL 5.7.2提升此限制,允许多个触发器。mysqldump以激活顺序dump触发器,以便在导入dump文件时,以相同的激活顺序创建触发器。但是,如果mysqldump的dump文件中存在同一张表具有相同触发事件和触发时机的多个触发器的情况,那么将dump文件导入旧服务器中时会发生错误。有关解决方法,请参见MySQL文档第2.11.2.1节“影响从MySQL 5.7降级的更改”;可以将触发器转换为与旧服务器兼容。

–where=’where_condition’, -w ‘where_condition’
只dump符合where_condition条件的行。“该用引号的地方”需要使用引号。

Examples:
–where=”user=’jimf'”
-w”userid>1″
-w”userid<1″

参考文献