使用 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 选择出来的记录。
--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:其他导出文件

https://docs.pingcap.com/zh/tidb/stable/dumpling-overview

posted @ 2022-08-02 09:56  wshenJin  阅读(795)  评论(0编辑  收藏  举报