TIDB 如何加快从上游RDS读取binlog的速度

【 TiDB 使用环境】生产环境
【 TiDB 版本】7.5.4
【遇到的问题:问题现象及影响】
平时通过TIDM同步没什么问题, 在业务高峰期, 线上RDS产生binlog的速度太快, 线下TIDB读取binlog的速度受限, 太慢了, 经常落后好几个binlog, 有没有什么方法能加快binlog读取.

DM-Worker 与 RDS 同 AZ,避免跨区 / 跨机房延迟, 至少保证 10Gbps+ 内网

升级 DM 到最新稳定版(如 8.5+),新版本对高并发拉取有大幅优化

多配置增加几个节点读取

修改 DM 集群的 dm-worker.toml 配置文件,优化一下并发

可以用最新版本工具试试

同机房部署:将 DM-worker 与上游 RDS 部署在同一可用区 / 机房,减少跨机房网络延迟,这是提升读取速度最直接的手段。

再补充一个办法,把两个系统弄到一个子网,子网带宽放到万兆以上

参数可以调整下看看

增加 worker-count等参数配置看看

建议检查:

1 TiKV CPU

看:

tikv grpc cpu
tikv scheduler cpu

如果高:

增加 TiKV 或增加并发。

2 Region热点

检查:

select * from information_schema.tidb_hot_regions;

如果有热点表:

需要打散。

3 TiDB参数

建议:

tidb_dml_batch_size = 200

提高批量写入。

2 个赞

先看 DM 的监控或 query-status:

query-status

重点看:

指标 含义
secondsBehindMaster 延迟
binlog pos 当前同步位置
relay log pos 已读取位置

如果发现:

情况1:relay log增长快

说明:

DM读取RDS binlog慢

可能原因:

网络带宽

单线程拉取

relay log IO

情况2:relay log正常,但apply慢

说明:

DM解析 / 写入TiDB慢

通常是:

DML apply线程少

TiDB写入TPS不足

2 个赞

可能还是DM并发的原因吧