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检查两者状态
- 主要组成: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配置文件
- 主要结构:DM-master,DM-worker,dmctl
-
TiDB Lighting 全量数据高速导入TiDB工具
- 主要结构:tidb-lighting,tikv-importer
- tidb-lighting,读取上游数据源,在下游建表,将数据转换成kv对发送给tikv-importer,检查数据完整性等
- tikv-importer,将lighting发来的kv对缓存,排序,切分并导入到TiKV集群
- tips
- 独立于下游TiDB集群部署,避免资源争用,加快导入速度
- 导入过程中,集群不可用
- 上游数据文件最好是小文件形式,部署多个Lighting+importer 加速导入
- lighting异常可以重启,重启前清理临时sock文件
- 断点续传信息存储文件或者单独数据库
- 注意目标集群空间足够,总存储必须 > 数据源大小 * 副本数量 * 2
- 主要结构:tidb-lighting,tikv-importer
-
PD Control 是 PD 的命令行工具,用于获取集群状态信息和调整集群,基本信息在PD 监控面板也可以看到,主要用来集群配置参数调整,调度参数调整,store 节点管理 等
上下游数据迁移有多少种排列组合
-
从哪里来
- 从Mydumper备份文件来,可以选择的交通方式有
- Lighting
- 从CSV来,可选择的交通方式有
- Lighting
- 从MySQL来,可以选择的交通方式有
- Syncer
- DM
- 从Amazon Aurora来,可选择的交通方式有
- DM
- 从Mydumper备份文件来,可以选择的交通方式有
-
到哪里去,都用 Pump + Drainer
- 去MySQL/TiDB
- 去Kafka
- 去flash
- 去file
更多阅读: