如何迁移drainer组件

【 TiDB 使用环境】测试

【 TiDB 版本】 4.0.4

【复现路径】

【遇到的问题:问题现象及影响】

使用tiup部署

drainer最近内存使用激增,看了论坛上的其他问答,发现除了升版本貌似没有其他解决办法,但是目前不考虑升版本。

drainer目前所在机器上有pump和kafka,经常会内存不足,现在想将drainer迁移至大内存的机器

但是在文档里只找到了 pd/tidb/tikv/tiflash/ticdc 的迁移方法

请问如何迁移drainer呢?

是不是先用tiup cluster scale-in --node 下线drainer

然后记录下当前ts

最后tiup cluster scale-out scale-out.yaml,在文件里用drainer_servers配置?

【资源配置】

【附件:截图/日志/监控】

drainer 内存暴增是因为 DDL 太多了,除非重新部署,否则 DDL 会一直留存…

你尝试先扩容 drainer,通过配置的方式把新的资源先用起来,在进行旧的资源下线处理。

按照你的理解的方式处理也可以,就是会有一段时间无法获取到 binlog 了 ( ts 十分重要,需要记录好)

可以参考这篇文档来加深理解:
https://docs.pingcap.com/zh/tidb/v4.0/tidb-binlog-relay-log

我的下游是kafka,似乎不能开启relay log

您的意思是我先把drainer扩容到2个,然后缩容到1个,这样最为稳妥吗

relay log 也是通过 ts 来获取起始位置的

对,你也可以按照你的思路处理,都可以的

但是文档里的drainer配置让我有点费解,这里既然标明已废弃,那我要如何指明ts值呢

你看的文档不是4.X 的吧

5.X之后,这个组件就被 ticdc 替换了,也建议你升级版本…


谢谢,是我疏忽了,但是我们生产环境太复杂了,用的ansible部署的集群,然后是drainer-kafka-阿里dts

似乎要完全卸载binlog,才能从ansible转为tiup,然后再升级版本,风险还是挺大的

还想请教一个问题,如果用我的方法的话,新起的drainer会从头开始全量同步数据吗?我这边由于是测试环境,从最新的ts读取也无所谓,但是从头开始全量同步希望能避免

仔细看下我给你回帖中,贴的图片

建议开启swap,设置为512G试试,512G跑满,大概需要24小时。