mysql tidb 删除延迟_TiDB DM踩坑实践总结

一、 背景

在早期从MySQL到TiDB实施同步操作过程中,我们大多数用的是mydumper+loader进行整体全量备份的导出,之后拿到meta信息后,通过syncer实现增量同步,整体操作起来比较麻烦,涉及的配置文件较多,其基本原理就是Syncer 通过把自己注册为一个 MySQL Slave 的方式,和 MySQL Master 进行通信,然后不断读取 MySQL Binlog,进行 Binlog Event 解析,规则过滤和数据同步。其架构如下:

22ca06e99b76130c2cb9040116890011.png

而后pingcap官方推出了TiDB Data Migration (DM)套件,这一套件极大地降低了同步工具使用的门槛。

DM是一体化的数据迁移任务管理平台,支持从 MySQL 或 MariaDB 到 TiDB 的全量数据迁移和增量数据复制。使用 DM 工具有利于简化错误处理流程,降低运维成本。后续更是有dm-portal工具方便dba通过图形化界面的方式进行选择性导出和自动生成配置文件,虽然有一些小bug和不够人性化的方面,但无伤大雅,可惜的是这个项目最后咨询官方得知被砍掉了,不再进行维护。

二、 原因

我有幸从DM内测版本开始就接触和使用这一工具,直至其最新版1.0.6,见证了DM功能不断的完善,真切体会到了这一工具给我们带来的帮助,我认为这是每一个DBA和TiDB使用者都应该了解甚至熟练掌握的工具,因为大多数场景下,我们使用TiDB并不是全新的系统上去直接建库建表,而是从MySQL迁移过来,先进行性能对比和测试,而后进行数据迁移的,因此熟练掌握DM工具可以让你的工作事半功倍。

三、架构

集群配置

集群版本:v3.0.5

集群配置:普通SSD磁盘,128G内存,40 核cpu

tidb21 TiDB/PD/pump/prometheus/grafana/CCS

tidb22 TiDB/PD/pump

tidb23 TiDB/PD/pump

tidb01 TiKV

tidb02 TiKV

tidb03 TiKV

tidb04 TiKV

tidb05 TiKV

tidb06 TiKV

tidb07 TiKV

tidb08 TiKV

tidb09 TiKV

tidb10 TiKV

tidb11 TiKV

tidb12 TiKV

tidb13 TiKV

tidb14 TiKV/DM-prometheus/DM-grafana/DMM

tidb15 TiKV/DMW1

tidb16 TiKV/DMW1

正常来说,官方建议抽出单独的机器来部署DM,且推荐每个节点上部署单个 DM-Worker 实例。除非机器拥有性能远超 TiDB 软件和硬件环境要求中推荐配置的 CPU 和内存,并且每个节点配置 2 块以上的硬盘或大于 2T 的 SSD,才推荐单个节点上部署不超过 2 个 DM-Worker 实例。而我们的线上环境机器比较吃紧,所以一直以来都是和TiKV进行混部的,例如上述架构中,选取了tidb14,tidb15,tidb16进行dm相关的软件部署。所幸运行起来效果还可以,但有条件的建议大家还是老老实实按照官方文档,单独部署。

DM架构

709a94b62d2241dbba3b6fbefb12f3fd.png

DM架构如上图所示,主要包括三个组件:DM-master,DM-worker 和 dmctl。

DM-master 负责管理和调度数据迁移任务的各项操作

DM-worker 负责执行具体的数据迁移任务

dmctl 是用来控制 DM 集群的命令行工具

具体的功能本文不再赘述,可参考官方文档了解每一个模块的详细功能

DM特性

Table routing 合并迁移

Block & allow table lists 白名单

Binlog event filter binlog级别过滤

Shard support 合库合表

四、新特性

dm从内测版本开始,每一个版本的迭代都修复和新加入了不少功能,这里我单独拎出来1.0.5这个版本,因为从这个版本开始,它支持了以前从来没有但又让人早就期盼已久的功能:online ddl的支持。

众所周知,MySQL在数据量大了后,没有人会直接去对原表进行alter,大多数人都通过第三方工具pt-online-schema-change或者gh-ost来进行改表,以此削减改表期间对线上业务的影响。而早期的dm不支持该功能时,每次上游改完表后,由于临时表(_xxxx_new,_xxx_gho等)不在白名单里,会直接导致下游tidb丢失该DDL,引发同步异常报警。当然,如果你是全库同步,那自然不会有这个问题,但绝大多数场景下都是部分表导入到TiDB,用到了白名单功能的情况下就会导致该问题出现。而1.0.5版本后,这便不再是问题,虽然目前仅仅只能同时支持一种改表工具,但对比之前来说,无疑是我认为最好的改进,还没用的朋友们不妨试一试。

例如:

上游通过pt-online

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值