drainer 进程启动失败

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
上游 TiDB 版本: v4.0.8 #历史上有很多大事务操作及很多DDL变更操作
下游 TiDB 版本:v5.0.2 #全新集群

【概述】 场景 + 问题概述
现有需求,将上游 TiDB 中的部分DB通过drainer服务同步至下游高版本集群,通过tiup 部署 drainer 服务,发现drainer无法启动。通过ps查看进程还在,但是,端口没有被 拉起。


【备份和数据迁移策略逻辑】

【背景】 做过哪些操作
单独做过drainer的升级工作,当前本地 drainer 已经最新版本。问题及现象依旧。
【现象】 业务和数据库现象

【问题】 当前遇到的问题

【业务影响】

【TiDB 版本】

【附件】

  • 相关日志、配置文件、Grafana 监控(https://metricstool.pingcap.com/)
  • TiUP Cluster Display 信息
  • TiUP CLuster Edit config 信息
  • TiDB-Overview 监控
  • 对应模块的 Grafana 监控(如有 BR、TiDB-binlog、TiCDC 等)
  • 对应模块日志(包含问题前后 1 小时日志)

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

1 个赞

drainer内存问题 这是我之前遇到的问题。 加大内存 知道drainer启动

1 个赞

299230 tidb 20 0 149.4g 149.2g 12552 S 35.4 79.3 10:10.52 drainer

1 个赞


我们的drainer 已经吃了快150GB 了 还没有起来
299230 tidb 20 0 149.4g 149.2g 12552 S 35.4 79.3 10:10.52 drainer

1 个赞

看下日志,如果有很多的ddl是会导致这种很消耗内存的现象

1 个赞

感谢解答!确实有很多DDL变更。业务用的很粗。但,我们要如何处理或跳过这个问题嗯?单机 188GB 内存都不够用;

1 个赞

这边没有什么特别的好的方式,我一般是重新同步数据,在初始化commits 这样可以跳过之前的大量ddl.

1 个赞

我可以接受从最新的commit_ts开始同步;但是貌似还是需要加载历史DDL操作。如果可以跳过,那是最好了。

1 个赞

我这边重新初始化数据,然后缩容drainer,在重新扩容同步,并未出现你说的情况,我这边也是会有很多ddl

1 个赞

我这边24h的pump数据、三个实例加起来要4T+,不知道与这个量有没有关系。同时,我这边测试过创建有一个空的DB,然后新建一张表,里面只有一条记录,然后通过drainer做这个DB的同步,init_commit_ts=-1 。发现起进程时,还是一样的问题。

1 个赞

进程是否存在?ps -ef一下

1 个赞

把测试环境的 drainer.toml 发一下

1 个赞

[root@lj-zeus-db-yzbx-119140 ~]# ps aux | grep drainer
tidb 317286 40.9 97.0 322179104 191447764 ? Ssl 13:12 27:02 bin/drainer --node-id=10.200.119.140:8252 --addr=10.200.119.140:8252 --pd-urls=http://10.10.:2379,http://10.10.:2379,http://10.10.2379 --data-dir=/tidb/data/drainer-8252 --log-file=/tidb/log/drainer-8252/drainer.log --config=conf/drainer.toml --initial-commit-ts=-1
root 320985 0.0 0.0 107988 56 pts/1 S+ 13:34 0:00 tail -F /tidb/log/drainer-8252/drainer.log
root 328408 0.0 0.0 112708 972 pts/2 S+ 14:18 0:00 grep --color=auto drainer
[root@lj-zeus-db-yzbx-119140 ~]# netstat -ntlp | grep 8252
[root@lj-zeus-db-yzbx-119140 ~]#

1 个赞

[root@lj-zeus-db-yzbx-119140 conf]# cat drainer.toml

WARNING: This file is auto-generated. Do not edit! All your modification will be overwritten!

You can use ‘tiup cluster edit-config’ and ‘tiup cluster reload’ to update the configuration

All configuration items you want to change can be added to:

server_configs:

drainer:

aa.b1.c3: value

aa.b2.c4: value

[syncer]
db-type = “tidb”
[syncer.to]
host = “cluster17.tidb.ljnode.com
password = “xxx”
port = 4000
user = “drainer_rw”

1 个赞

日志发一下,这个DDL的问题导致的 却是没有太好的办法 如果使用cdc也会出现内存的问题

1 个赞

是的!我们最开始计划是CDC同步的;CDC同步中也遇到了OOM问题;所以转战 Drainer

1 个赞

非常感谢耐心解答!谢谢你

1 个赞

据我了解cdc的问题 可能会在5.1.4版本解决,之后你可以在尝试。 https://github.com/pingcap/tiflow/issues/3174

2 个赞

好的!我关注下~!

这种架构无法保证rpo=0, 可以参考一下这个同城架构,DR Auto-Sync 搭建和计划内切换操作手册