生态工具原理学习笔记 (笔记)
作者: xialuo1990 原文来源:https://tidb.net/blog/049fcb66
TiDB Data Migration
DM 简介
DM 是 MySQL 同步到 TiDB 的数据同步工具。具备一下特性:
一体化数据同步管理平台 (client)
全量 (dumper+loader)+ 增量复制 (syncer)
多任务实例 X 多容不任务
同步异常处理、状态监控
更加完善的合库合表支持
DM 架构
DM-master
DM-master 负责管理和调度数据同步任务的各项操作。
保存 DM 集群的拓扑信息
监控 DM-worker 进程的运行状态
监控数据同步任务的运行状态
提供数据同步任务管理的统一入口
协调分库分表场景下各个实例分表的 DDL 同步
DM-worker
DM-worker 负责执行具体的数据同步任务。
将 binlog 数据持久化保存在本地
保存数据同步子任务的配置信息
编排数据同步子任务的运行
监控数据同步子任务的运行状态
功能支持
组件介绍
dumper
相比 mydumper, 增加黑白名单和正则表达式
load
batch 导入,提升导入速度
DDL 的 router 实现是通过读取 schema 文件后,替换实现
relay log
支持上游 MySQL/MariaDB
兼容 binlog position/gtid
支持 relay log 自动清理并进行了安全性保障
为保证正确性 / 时序,DDL 操作会等之前 DML 队列的消息执行完成后再执行
Sharding DDL
Sharding DDL 实现
在 DM-mater 上引入协调者,来保证上一个版本的所有 DML 都在下游执行完成后,才应用下一个版本 DDL 语句
Sharding DDL 约束
所有上游分片 DDL 都需要成功执行并成功被 worker 接收到
所有分片上执行的 DDL 相对顺序必须一致
协调 DDL 过程中,同步延迟会增加
下游承担业务读,并业务对读写延迟比较敏感的,需要在业务低峰期操作或者禁止 DDL 同步到下游(人工添加方式)。
Checkpoint 设计
通过将同步位点信息存储在下游的 meta-schema 表,实现断点续传
DDL 执行成功后,立即 flush 到下游的 TiDB 中
DML 事务结束后,定期 flush 到下游的 TiDB 中
TiDB Binlog
概述
TiDB Binlog 是一个勇于收集 TiDB 的 binlog,并提供数据同步,异常备份的工具
TiDB Binlog 支持以下场景:
同步数据到从集群
备份文件和恢复
输出到 kafka, 提供缓存更新和大数据相关服务
Binlog 格式
类似 MySQL Row Format
记录每行的数据变更
事务相关信息
start TS +primary key for P-Binlog(prewrite)
commit TS for C-Binlog
Binlog 写入流程
TiDB 采用两阶段来对事务进行提交
Prepare 阶段:
写数据到 TiKV
写 priwrite binlog 到 Pump(增加)
Commit 阶段
发送 Commit 到 TiKV
异步发送 Commit binlog 到 Pump
Pump 设计与实现
提供写 Binlog 服务(通过 GRPC 网络请求)
append binlog 到 log 文件
返回写成功给 TiDB(异步)
将 Binlog 元信息存储到 KV DB(异步)
更新 MaxCommit Ts(保证有序性)
存储 Binlog 到本地
根据配置文件,计算需要删除的 KV 以及 Vlog 文件
保证 GC 的安全性
获取 Binlog 服务 (实现单 Pump 内事务按照 commit TS 有序)
通过 GRPC 返回指定 Commit-TS 后的 Binlog
按照 Commit Ts 顺序返回
Drainer 设计与实现
Drainer 作用
grpc 持续拉取全部 pump 的 binlog
根据 commit Ts 合并排序 Binlog
支持下游:
MySQL/TiDB 灾备 / 从集群
本地备份文件 备份
Kafka 缓存更新 / 大数据
Pump/Drainer 状态
Pump/Drainer 的不同状态
offline: 下线状态
pause: 暂停状态
online:运行状态
binlogctl 查看状态与下线状态
./binlogctl -cmd drainers
./binlogctl -cmd offline-drainer -node-id node-name:port
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/234166dac7896c76e107535f9】。文章转载请联系作者。
评论