dm-worker 消费慢,上下游binlog 延迟较多

  • 【TiDB 版本】:v4.0.1
  • 【问题描述】: 使用dm同步mysql数据,消费较慢。binlog 延迟较多
    dm 监控状态

tidb 基本状态:


tidb 热点读 & 热点写的 监控



热点写监控表

以上信息是不是可以判定就是表的热点写造成的消费慢?
请问有什么最佳实践的解决办法么 ?

看下 task 文件配置。辛苦上传下。
dm 版本提供下
使用以下方式,提供下 overview 面板完整截图。我们看下。


打开 grafana 监控,先按 d 再按 shift+e 可以打开所有监控项。

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

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

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

dm:1.0.6

name: laxin_wechat_pt # global unique
task-mode: all # full/incremental/all
is-sharding: false # whether multi dm-worker do one sharding job
meta-schema: “dm_meta” # meta schema in downstreaming database to store meta informaton of dm
remove-meta: false # remove meta from downstreaming database, now we delete checkpoint and online ddl information
enable-heartbeat: false # whether to enable heartbeat for calculating lag between master and syncer
case-sensitive: true

target-database:
host: “172.29.xxx”
port: xxxxx
user: “dm_worker”
password: “xxxxxxxxxxxx=”
session:
sql_mode: “NO_ENGINE_SUBSTITUTION”

mysql-instances:

source-id: "laxin_wechat_pt"
black-white-list:  "bw-rule-laxin_wechat_pt"
mydumper-config-name: "global"   # ref `mydumpers` config
syncer-config-name: "global"    # ref `syncers` config
loader:
  pool-size: 4
  dir: "/data/dm_worker1/dumped_data"

common configs shared by all instances

black-white-list:
bw-rule-laxin_wechat_pt:
do-dbs: []
ignore-dbs: [“mysql”,“sys”,“information_schema”,“performance_schema”,“proxy_heart_beat”,“tmp”]

mydumpers:
global:
mydumper-path: “/home/tidb/tidb-tools/bin/mydumper”
threads: 8
chunk-filesize: 64
skip-tz-utc: true
extra-args: “–regex .*”

syncers:
global:
worker-count: 16
batch: 100

Hello~ 从 TiDB 的监控延迟看,TiDB 并没有很慢。所以建议尝试开大并发,将 worker-count 调大到 32 ,再看一下同步速度。目前 TiDB 可以支撑更大的并发同步。

调整了,并没啥变化。昨晚又延迟了挺多binlog

binlog 中是对某一批表进行更新和插入,dm-worker.log 中显示这些更新时间都在1秒多 。[“cost time”=1.017521833s]

asktug 搜索下 region merge 合并下空 region

看下 dn worker 服务器,压力如何,关注 cpu memory disk io util

worker count 调整到 64

已经将worker count 调整到64, 效果还可以。但是在load 其他实例数据的时候,上述实例还是会偶尔延迟两三个binlog 。
region merge 已经调整了 split-region-on-table & enable-cross-table-merge 并reload 了。tiup cluster reload zyb-tidb -R pd

但是但是region 并没有合并 并且 pdctl 查看到的好像并未生效
image

将参数回复到默认值吧,

region merge 调整如下参数即可

pd-ctl config set max-merge-region-size 20 # 默认
pd-ctl config set max-merge-region-keys 200000 # 默认
pd-ctl config set merge-schedule-limit 8 # 默认,主要参数!根据业务情况调整到 32 64 128 等
namespace-classifier = “default”
split-region-on-table,默认值为 true,

这需要看下 服务器是否是瓶颈了,资源情况如何。tidb 是否有写入瓶颈,压力如何,如果没有压力。可以在调整的大一点。