zoukankan      html  css  js  c++  java
  • tidb的全量逻辑导出数据工具dumpling

    ######################

    功能:

    Dumpling 是一个用于从 MySQL/TiDB 进行全量逻辑导出的工具。你可以把存储在 TiDB 或 MySQL 中的数据导出为 SQL 或 CSV 格式,用于逻辑全量备份。

    • 数据源:不仅能够导出mysql的数据,而且还可以导出tidb的数据;
    • 格式:数据导出格式可以为sql文件格式,也可以导出为csv格式。这种格式方便迁移到其他数据库;
    • 用途:逻辑备份数据

    基本信息:

    • Dumpling 的输入:MySQL/TiDB 集群
    • Dumpling 的输出:SQL/CSV 文件
    • 适用 TiDB 版本:所有版本
    • Kubernetes 支持:尚未支持

     权限要求:

    • select
    • reload
    • lock tables
    • replication client
    • process

    原理:

     适用场景:

    • 数据量较小,不适合大数据量导出;
    • 需要导出数据为sql或csv格式的需求
    • 只能全量导出数据,不能增量导出数据

    导出数据后的元数据信息metadata:此文件包含导出的起始时间,以及 master binary log 的位置。

    [work@xxx]$ cat metadata
    Started dump at: 2021-10-14 15:46:56
    SHOW MASTER STATUS:
        Log: mysql-bin.000224
        Pos: 1990
        GTID:ef863667-298a-11eb-8d0b-0c42a15d0b4c:1-175408
    
    Finished dump at: 2021-10-14 16:01:41

    安装dumpling:

    shell>> tiup install dumpling 

    查看dumpling命令参数:

    shell>> tiup dumpling --help
    metadata:此文件包含导出的起始时间,以及 master binary log 的位置。
    
    Copy
    cat metadata
    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 文件。
    
    Copy
    cat test-schema-create.sql
    CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
    {schema}.{table}-schema.sql:创建 table 的 SQL 文件
    
    Copy
    cat test.t1-schema.sql
    CREATE TABLE `t1` (
      `id` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
    {schema}.{table}.{0001}.{sql|csv}:数据源文件
    
    Copy
    cat test.t1.0.sql
    /*!40101 SET NAMES binary*/;
    INSERT INTO `t1` VALUES
    (1);
    *-schema-view.sql、*-schema-trigger.sql、*-schema-post.sql:其他导出文件

    备份命令:

    shell>> tiup dumpling   --user root -p 123456  --host 10.10.10.10 --port 3306  --filetype sql -t 8 -F 102400MiB  -o /home/work/scripts/tmp/10.10.10.10   --database  apple,google,airbnb

    当你只需要备份mysql或tidb的部分数据库时,用--database指定数据库时,各个数据库名称之间用逗号分割,而不是空格

    选项:--sql
    
    说明:选项仅仅可用于导出 CSV 的场景。  
    
    举例:--sql 'select * from `test`.`sbtest1` where id < 100'
    选项:--where
    
    说明:条件用于除系统数据库(包括 mysql 、sys 、INFORMATION_SCHEMA 、PERFORMANCE_SCHEMA、METRICS_SCHEMA 和 INSPECTION_SCHEMA)外所有其他数据库
    举例:
    --where "id < 100"
    选项: --filter 
    
    说明:帅选库表,多个匹配规则就用多个--filter规则
    
    举例: --filter "employees.*"  --filter "*.WorkOrder"  只备份employees库中所有表,和所有库中的WorkOrder表
    选项:--threads ,可简写为-t
    
    说明:指定备份并发线程数,默认为4
    
    举例:--threads 8
    选项:--tables-list,可简写为-T
    
    说明:指定备份表,需要库名称前缀
    
    举例:--tables-list   my_db.my_table
    选项:--consistency,可简写为-T
    
    说明:指定备份表,需要库名称前缀
    
    举例:--consistency   auto
    
    
    Dumpling 通过 --consistency <consistency level> 标志控制导出数据“一致性保证”的方式。在使用 snapshot 来保证一致性的时候,可以使用 --snapshot 选项指定要备份的时间戳。还可以使用以下的一致性级别:
    
    flush:使用 FLUSH TABLES WITH READ LOCK 短暂地中断备份库的 DML 和 DDL 操作、保证备份连接的全局一致性和记录 POS 信息。所有的备份连接启动事务后释放该锁。推荐在业务低峰或者 MySQL 备份库上进行全量备份。
    
    snapshot:获取指定时间戳的一致性快照并导出。
    lock:为待导出的所有表上读锁。
    none:不做任何一致性保证。
    auto:对 MySQL 使用 flush,对 TiDB 使用 snapshot。
    选项:--rows,可简写为-r
    
    说明:单个文件的最大行数
    
    举例:--rows   2000000

    #########################

    igoodful@qq.com
  • 相关阅读:
    BZOJ4403: 序列统计【lucas定理+组合数学】
    BZOJ4767: 两双手【组合数学+容斥原理】
    BZOJ5340: [Ctsc2018]假面【概率+期望】【思维】
    BZOJ4710: [Jsoi2011]分特产【组合数学+容斥】
    BZOJ5091: [Lydsy1711月赛]摘苹果【期望DP】
    BZOJ3473: 字符串【后缀数组+思维】
    BZOJ3879: SvT【后缀数组+单调栈】
    BZOJ1369/BZOJ2865 【后缀数组+线段树】
    BZOJ3230: 相似子串【后缀数组】
    BZOJ4310: 跳蚤 【后缀数组+二分】
  • 原文地址:https://www.cnblogs.com/igoodful/p/15407072.html
Copyright © 2011-2022 走看看