DM Sync阶段同步太慢,落后超过5个binlog文件,实时查询无法满足

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:V2.1.15
  • 【问题描述】:线下搭了2套DM集群分别向2套TiDB 实时导数据。

第一套DM集群 release version: v1.0.0-alpha-83-gf6f0566 第二套DM集群 release version:v1.0.3

目前第一套集群使用的参数

mysql-instances:
-
  syncer-config-name: "global"

syncers:
  global:
    worker-count: 24
    batch: 1000

第二套集群使用的参数:

syncer-thread: 24

两套DM集群 都报 alertname = DM_binlog_file_gap_between_master_syncer。 看监控,落后的binlog文件在6个以上。

而,主库MySQL 有4个MySQL从库,同步延迟都很小,小于10s。

这个延迟的问题,是线上主库,每天早上都会有大批量数据写入,短时间内生成了大量的binlog文件。

目前正在调整syncer thread的数值(原值为16),但是还是很难保证实时。这个问题,严重影响业务的实时查询,导致大家的任务 都只能跑在MySQL 从库节点上。

想知道,官方有保证同步延时小于10s 甚至1s的措施嘛?

麻烦确认下出现同步延迟的时候,下游 tidb 的 QPS,以及各个性能监控面板的情况

tidb server qps:

image

tidb server mem:

tidb server cpu:

image

任务 延迟情况:

image

任务 执行情况:

下游4台kv节点的CPU 使用:

看监控,下游tidb 的资源完全充足,KV节点也不算忙

请问下,使用 DM 同步是否是合库合表的场景,是否有执行 DDL ?

1.合库合表场景的话,上游执行 DDL,sharding ddl 会协调所有 ddl 执行成功后,才在下游执行。该情况有可能会导致延迟。

2.是否使用 PT 工具更改表结构,如果有,可以参考这个帖子:上游mysql ddl,dm同步延迟近7个小时

3.同步的表是否有唯一键或者主键索引,没有主键或者唯一索引,导致 DM 无法并发同步。可以参考该帖子:DM 同步延迟问题 - #13,来自 啦啦啦啦啦

4.如果以上原因都排除掉, 麻烦给下完整的 dm-worker 的监控截图,TiDB 以及 TiKV 的监控也麻烦导出一份看下。完整的。辛苦

  1. chrome 安装这个插件https://chrome.google.com/webstore/detail/full-page-screen-capture/fdpohaocaechififmbbbbbknoalclacl
  2. 鼠标焦点置于 Dashboard 上,按 ?可显示所有快捷键,先按 d 再按 E 可将所有 Rows 的 Panels 打开,需等待一段时间待页面加载完成。
  3. 使用这个 full-page-screen-capture 插件进行截屏保存
  1. 不是合库合表的场景

  2. 没有使用PT,正常的增量同步任务

  3. 看了,都有主键和唯一索引

这是DM task的监控图

tidb/tikv 上的域名过滤较麻烦,但是我看到没有资源紧张的问题,没有热点问题,也没有什么查询负载。

  1. 请按照上图9点到11点的监控时间,上传dm-worker的日志
  2. 请上传下游tidb 9点到11的监控信息 over view,tidb , detail-tikv

(1)、chrome 安装这个插件https://chrome.google.com/webstore/detail/full-page-screen-capture/fdpohaocaechififmbbbbbknoalclacl

(2)、鼠标焦点置于 Dashboard 上,按 ?可显示所有快捷键,先按 d 再按 E 可将所有 Rows 的 Panels 打开,需等待一段时间待页面加载完成。

(3)、使用这个 full-page-screen-capture 插件进行截屏保存

  1. 这段时间的slow log 日志请上传