【 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并发的原因吧