Skip to content

Latest commit

 

History

History
82 lines (62 loc) · 4.51 KB

user-guide.md

File metadata and controls

82 lines (62 loc) · 4.51 KB

Dumpling 使用手册

Dumpling 是支持以 SQL 文本或者 CSV 格式将 MySQL/TiDB 数据导出的工具。

设计初衷是为了替代 Mydumper, 所以基本用法可以参考 Mydumper, 当然在实现中没有完全照搬 Mydumper, 因此存在与 Mydumper 不同的用法。

下表罗列了一些主要参数

主要参数
-B 或 --database 导出指定数据库
-T 或 --tables-list 导出指定数据表
-f 或 --filter 导出能匹配模式的表,语法可参考 table-filter(只有英文版)
--case-sensitive table-filter 是否大小写敏感,默认为 false 不敏感
-h 或 --host 链接节点地址(默认 "127.0.0.1")
-t 或 --threads 备份并发线程数
-r 或 --rows 将 table 划分成 row 行数据,一般针对大表操作并发生成多个文件。
--loglevel 日志级别 {debug,info,warn,error,dpanic,panic,fatal} (默认 "info")
-d 或 --no-data 不导出数据, 适用于只导出 schema 场景
--no-header 导出 table csv 数据,不生成 header
-W 或 --no-views 不导出 view, 默认 true
-m 或 --no-schemas 不导出 schema , 只导出数据
-s 或--statement-size 控制 Insert Statement 的大小,单位 bytes
-F 或 --filesize 将 table 数据划分出来的文件大小, 需指明单位 (如 128B, 64KiB, 32MiB, 1.5GiB)
--filetype 导出文件类型 csv/sql (默认 sql)
-o 或 --output 设置导出文件路径
--output-filename-template 设置导出文件名模版,详情见下
-S 或 --sql 根据指定的 sql 导出数据,该指令不支持并发导出
--consistency flush: dump 前用 FTWRL
snapshot: 通过 tso 指定 dump 位置
lock: 对需要 dump 的所有表执行 lock tables read
none: 不加锁 dump,无法保证一致性
auto: MySQL flush, TiDB snapshot
--snapshot snapshot tso, 只在 consistency=snapshot 下生效
--where 对备份的数据表通过 where 条件指定范围
-p 或 --password 链接密码
-P 或 --port 链接端口,默认 4000
-u 或 --user 默认 root

更多具体用法可以使用 -h, --help 进行查看。

Mydumper 相关参考

Mydumper usage

TiDB Mydumper 使用文档

Dumpling 下载链接

nightly

导出文件名模版

--output-filename-template 参数指定了所有文件的命名方式(不含扩展名)。它使用 Go 的 text/template 语法

模板可使用以下字段:

  • .DB — 库名
  • .Table — 表名、物件名称。
  • .Index — 由 0 开始的序列号,代表当前导出的表中的哪一份文件

库和表名中可能包含 / 之类的特殊字符,而这些字符不能用在文件系统中。因此,Dumpling 提供了一个 fn 函数来对这些特殊字符进行百分号编码。它们是:

  • U 0000 到 U 001F (控制字符)
  • /\<>:"*? (无效的 Windows 路径字符)
  • . (库/表名分隔符)
  • -,当出现在 -schema 字串里

例如,使用 --output-filename-template '{{fn .Table}}.{{printf " d" .Index}}' 后,Dumpling 会把表 "db"."tbl:normal" 导出到 tbl:normal.000000000.sqltbl:normal.000000001.sql 等文件。

除数据文件外,Dumpling 还支持透过子模版自定义命名表结构文件的名称。默认的配置是:

模版名 默认内容
data {{fn .DB}}.{{fn .Table}}.{{.Index}}
schema {{fn .DB}}-schema-create
table {{fn .DB}}.{{fn .Table}}-schema
event {{fn .DB}}.{{fn .Table}}-schema-post
function {{fn .DB}}.{{fn .Table}}-schema-post
procedure {{fn .DB}}.{{fn .Table}}-schema-post
sequence {{fn .DB}}.{{fn .Table}}-schema-sequence
trigger {{fn .DB}}.{{fn .Table}}-schema-triggers
view {{fn .DB}}.{{fn .Table}}-schema-view

例如,使用 --output-filename-template '{{define "table"}}{{fn .Table}}.$schema{{end}}{{define "data"}}{{fn .Table}}.{{printf " d" .Index}}{{end}}'后,Dumpling 会把表 "db"."tbl:normal" 的结构写到 tbl:normal.$schema.sql,以及把数据写到 tbl:normal.000000000.sql