使用 Dumpling从 TiDB/MySQL 导出数据
个人学习笔记,谢绝转载!!!
原文:https://www.cnblogs.com/wshenjin/p/16542778.html
安装
tiup install dumpling
所需要权限
- shell
- SELECT
- RELOAD
- LOCK TABLES
- REPLICATION CLIENT
- PROCESS
基本参数
- -h|--host: 连接的数据库主机的地址, 默认127.0.0.1
- -p|--password: 连接的数据库主机的密码
- -P|--port: 连接的数据库主机的端口, 默认4000
- -u|--user: 连接的数据库主机的用户名, 默认root
- -B|--database: 导出指定数据库
- -T|--tables-list: 导出指定数据表, 只能接受完整的 DB.TABLE 形式
- -f|--filter: 导出能匹配模式的表, 与 -T 选项不可同时使用。
- --filetype: 导出文件类型(csv/sql), 默认sql
- -o|--output: 导出本地文件路径或外部存储 URL
- --case-sensitive: table-filter 是否大小写敏感, 默认false大小写不敏感
- -t|--threads: 备份并发线程数, 默认4
- -d|--no-data: 不导出数据,只导出 schema
- -m|--no-schemas: 不导出 schema,只导出数据
- -W|--no-views: 不导出 view
- --no-header: 导出 csv 格式的 table 数据,不生成 header
- -F|--filesize: 将 table 数据划分出来的文件大小,需指明单位(如 128B, 64KiB, 32MiB, 1.5GiB)
- -r|--rows: 将 table 划分成 row 行数据,一般针对大表操作并发生成多个文件。
当上游为 TiDB 且版本为 v3.0 或更新版本时,设置 -r 参数大于 0 表示使用 TiDB region 信息划分表内并发,具体取值不影响划分算法。 - -S|--sql: 根据指定的 sql 导出数据
该选项不支持并发导出
该选项仅仅可用于导出 CSV 文件的场景
该选项配置导出时,Dumpling 无法获知导出的表库信息。 - --where: 对备份的数据表通过 where 条件指定范围
该选项与 -S|--sql 选项不可同时使用。 - --consistency: 控制导出数据“一致性保证”的方式。
flush: 使用 FLUSH TABLES WITH READ LOCK 短暂地中断备份库的 DML 和 DDL 操作、保证备份连接的全局一致性和记录 POS 信息。
snapshot: 通过 TSO 来指定 dump 某个快照时间点的 TiDB 数据
lock: 对需要 dump 的所有表执行 lock tables read 命令
none: 不加锁 dump,无法保证一致性
auto: 对 MySQL 使用 flush;对 TiDB 使用 snapshot
默认: auto
导出 SQL
tiup dumpling -u USER -h HOST -P PORT -p 'PASSWD' -o DUMPDIR --filetype sql
Dumpling 默认导出数据格式为 SQL 文件。也可以通过设置 --filetype sql 导出数据到 SQL 文件。
导出 CSV
通过使用 --filetype csv 导出数据到 CSV 文件:
tiup dumpling -u USER -h HOST -P PORT -p 'PASSWD' -o DUMPDIR --filetype csv
导出 CSV 文件时,可以使用 --sql
--sql 选项仅可用于导出 CSV 文件的场景。
--sql 配置导出时,Dumpling 无法获知导出的表库信息。此时可以使用 --output-filename-template 选项来指定 CSV 文件的文件名格式,
例如 --output-filename-template='test.sbtest1.{{.Index}}' 指定导出的 CSV 文件为 test.sbtest1.000000000、test.sbtest1.000000001 等。
导出 TiDB 的历史数据快照
导出的文件
metadata:此文件包含导出的起始时间,以及 master binary log 的位置。
Started dump at: 2020-11-10 10:40:19
SHOW MASTER STATUS:
Log: tidb-binlog
Pos: 420747102018863124
Finished dump at: 2020-11-10 10:40:20
{schema}-schema-create.sql:创建 schema 的 SQL 文件。
CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
{schema}.{table}-schema.sql:创建 table 的 SQL 文件
CREATE TABLE `t1` (
`id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
{schema}.{table}.{0001}.{sql|csv}:数据源文件
/*!40101 SET NAMES binary*/;
INSERT INTO `t1` VALUES
(1);
-schema-view.sql、-schema-trigger.sql、*-schema-post.sql:其他导出文件