TiDB追番手账(下)

TiDB集群和他的朋友们

  • 官方文档

  • TiDB Binlog 是一个用于收集 TiDB 的 binlog,并提供准实时备份和同步功能的商业工具。

    • 主要组成:Pump,Drainer,binlogctl
      • Pump,记录binlog并按照事务的提交时间排序,提供给Drainer消费
      • Drainer,从集群的每个pump收集binlog进行合并,转化成指定格式(mysql/tidb,file,kafka,pb)同步到下游
      • binlogctl,命令行管理工具,查看&更新pump/drainer状态
    • tips
      • Ansible统一部署维护
      • pump&drainer状态互相依赖,如果有异常,用binlogctl检查两者状态
  • Mydumper + Loader TiDB备份及恢复工具

    • fork Mydumper & 优化针对TiDB特性,比如可以设置时间戳指定备份时间等。注意,如果集群单表数据量大,建议设置参数对导出文件进行分割,方便在使用备份文件夹恢复时,可以充分利用多线程加快恢复速度。

    • Loader 官方自研,能够读取Mydumper的输出文件,通过MySQL protocol 向TiDB/MySQL中导入数据

  • Syncer 增量数据同步工具,将MySQL的数据增量导入到TiDB,作为MySQL的一个从库的角色,根据binlog+position的位置拉取上游数据,同步到下游集群

    • 功能支持
      • 支持gtid,binglog+position
      • 支持同步过滤白名单/黑名单
      • 支持所有或者指定库表的DDL/DML跳过
      • 支持上游多个数据来源的合并到下游集群,指定sharding规则实现
      • 同步前检查上游数据库版本,字符集,sqlmode,同步的表是否有主键或者唯一索引
    • 通过prometheus监控告警同步状态,上下游数据同步位置等
  • Data Migration(DM)一体化的数据同步任务管理平台,支持从 MySQL 或 MariaDB 到 TiDB 的全量数据迁移和增量数据同步。使用 DM 工具有利于简化错误处理流程,降低运维成本

    • 主要结构:DM-master,DM-worker,dmctl
      • DM-master,管理调度DM-worker
      • DM-worker,执行具体的同步task,dumper + loader + syncer/binlogrepl
      • dmctl,命令行工具
    • 分库分表合并,白名单/黑名单,过滤指定类型binlog,同步延迟监控
    • 多个上游变更合并下发,一个worker可以支持多个任务,支持多个woker
    • 任务复杂是,借助网页程序 DM Portal 生成可以直接让woker执行的task配置文件
  • TiDB Lighting 全量数据高速导入TiDB工具

    • 主要结构:tidb-lighting,tikv-importer
      • tidb-lighting,读取上游数据源,在下游建表,将数据转换成kv对发送给tikv-importer,检查数据完整性等
      • tikv-importer,将lighting发来的kv对缓存,排序,切分并导入到TiKV集群
    • tips
      • 独立于下游TiDB集群部署,避免资源争用,加快导入速度
      • 导入过程中,集群不可用
      • 上游数据文件最好是小文件形式,部署多个Lighting+importer 加速导入
      • lighting异常可以重启,重启前清理临时sock文件
      • 断点续传信息存储文件或者单独数据库
      • 注意目标集群空间足够,总存储必须 > 数据源大小 * 副本数量 * 2
  • PD Control 是 PD 的命令行工具,用于获取集群状态信息和调整集群,基本信息在PD 监控面板也可以看到,主要用来集群配置参数调整,调度参数调整,store 节点管理 等

上下游数据迁移有多少种排列组合

  • 从哪里来

    • 从Mydumper备份文件来,可以选择的交通方式有
      • Lighting
    • 从CSV来,可选择的交通方式有
      • Lighting
    • 从MySQL来,可以选择的交通方式有
      • Syncer
      • DM
    • 从Amazon Aurora来,可选择的交通方式有
      • DM
  • 到哪里去,都用 Pump + Drainer

    • 去MySQL/TiDB
    • 去Kafka
    • 去flash
    • 去file

更多阅读:

TiDB 追番手帐(上)
TiDB 追番手帐(中)

1赞

感谢小姐姐追番手账的完结,在准备考试的过程中如有新的内容可以继续补充在手账中哦