Drainer启动超时

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:TiDB 4.0-rc
  • 【问题描述】:Drainer启动失败,但在下游mysql当中,tidb_binlog的库和表都建上了,但里面没有数据。


    下载mysql截图:

    Drainer的配置文件:
    drainer_mysql_drainer.toml (2.5 KB)



    drainer启动时的日志:

    [2020/05/27 16:45:39.793 +08:00] [WARN] [pd.go:109] [“get timestamp too slow”] [“cost time”=1.667744642s]
    [2020/05/27 16:45:56.994 +08:00] [INFO] [version.go:50] [“Welcome to Drainer”] [“Release Version”=v4.0.0-rc] [“Git Commit Hash”=b9af7839b97cfb26a71307a8b6334f2269b60a95] [“Build TS”=“2020-04-08 07:55:27”] [“Go Version”=go1.13] [“Go OS/Arch”=linux/amd64]
    [2020/05/27 16:45:56.995 +08:00] [INFO] [main.go:46] [“start drainer…”] [config=“{"log-level":"info","node-id":"","addr":"http://10.7.107.111:8249","advertise-addr":"http://10.7.107.111:8249","data-dir":"/data1/deploy/data.drainer","detect-interval":10,"pd-urls":"http://10.7.110.114:2379,http://10.7.110.115:2379,http://10.7.110.116:2379","log-file":"/data1/deploy/log/drainer.log","initial-commit-ts":-1,"sycner":{"sql-mode":null,"ignore-txn-commit-ts":[],"ignore-schemas":"INFORMATION_SCHEMA,PERFORMANCE_SCHEMA,mysql","ignore-table":null,"txn-batch":20,"loopback-control":false,"sync-ddl":true,"channel-id":0,"worker-count":16,"to":{"host":"10.7.110.120","user":"hqzc_online","password":"hqzc_online@com!","security":{"ssl-ca":"","ssl-cert":"","ssl-key":"","cert-allowed-cn":null},"encrypted_password":"","sync-mode":0,"port":3306,"checkpoint":{"type":"","schema":"","host":"","user":"","password":"","encrypted_password":"","port":0},"dir":"","retention-time":0,"zookeeper-addrs":"","kafka-addrs":"","kafka-version":"","kafka-max-messages":0,"kafka-client-id":"","topic-name":""},"replicate-do-table":null,"replicate-do-db":["cw"],"db-type":"mysql","relay":{"log-dir":"","max-file-size":10485760},"disable-dispatch-flag":null,"enable-dispatch-flag":null,"disable-dispatch":false,"enable-dispatch":null,"safe-mode":false,"disable-detect-flag":null,"enable-detect-flag":null,"disable-detect":null,"enable-detect":null},"security":{"ssl-ca":"","ssl-cert":"","ssl-key":"","cert-allowed-cn":null},"synced-check-time":5,"compressor":"","EtcdTimeout":5000000000,"MetricsAddr":"","MetricsInterval":15}”]
    [2020/05/27 16:45:56.995 +08:00] [INFO] [client.go:135] [“[pd] create pd client with endpoints”] [pd-address=“[http://10.7.110.114:2379,http://10.7.110.115:2379,http://10.7.110.116:2379]”]
    [2020/05/27 16:45:56.998 +08:00] [INFO] [base_client.go:242] [“[pd] switch leader”] [new-leader=http://10.7.110.116:2379] [old-leader=]
    [2020/05/27 16:45:56.999 +08:00] [INFO] [base_client.go:92] [“[pd] init cluster id”] [cluster-id=6812808469366657611]
    [2020/05/27 16:45:56.999 +08:00] [INFO] [server.go:119] [“get cluster id from pd”] [id=6812808469366657611]
    [2020/05/27 16:45:57.000 +08:00] [INFO] [server.go:128] [“set InitialCommitTS”] [ts=416958161088151553]
    [2020/05/27 16:45:57.003 +08:00] [INFO] [checkpoint.go:64] [“initialize checkpoint”] [type=mysql] [checkpoint=416958161088151553] [cfg=“{"CheckpointType":"mysql","Db":{"host":"10.7.110.120","user":"hqzc_online","password":"hqzc_online@com!","port":3306},"Schema":"tidb_binlog","Table":"checkpoint","ClusterID":6812808469366657611,"InitialCommitTS":416958161088151553,"dir":"/data1/deploy/data.drainer/savepoint"}”]
    [2020/05/27 16:45:57.003 +08:00] [INFO] [store.go:68] [“new store”] [path=“tikv://10.7.110.114:2379,10.7.110.115:2379,10.7.110.116:2379?disableGC=true”]
    [2020/05/27 16:45:57.004 +08:00] [INFO] [client.go:135] [“[pd] create pd client with endpoints”] [pd-address=“[10.7.110.114:2379,10.7.110.115:2379,10.7.110.116:2379]”]
    [2020/05/27 16:45:57.007 +08:00] [INFO] [base_client.go:242] [“[pd] switch leader”] [new-leader=http://10.7.110.116:2379] [old-leader=]
    [2020/05/27 16:45:57.007 +08:00] [INFO] [base_client.go:92] [“[pd] init cluster id”] [cluster-id=6812808469366657611]
    [2020/05/27 16:45:57.009 +08:00] [INFO] [store.go:74] [“new store with retry success”]

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

1 个赞
  1. 是使用 ansible 管理的 4.0 集群吗? 这是第一次安装drianer吗?请问在安装过程中是否有报错?
  2. 麻烦启动时添加 -vvv 参数, 反馈中控机部署目录/log下的 ansible.log 日志,多谢。

1、是使用ansible管理4.0集群。是第一次安装drainer。安装过程没有报错
2、在启时加上了-vvv
ansible.log (50.1 KB)

从报错看是连接drianer的主机时超时了,能否在 drainer的机器上,部署目录找到/scripts目录,手工启动start_drainer.sh 看下是否报错,多谢。

试了一下,日志还和原来一样,没什么变化了

  1. 请问,方便上传 inventory.ini ,pump 和 drainer 的配置文件吗?
  2. 能否查看 drainer 日志目录下是否有 其他 err日志,多谢。

1、将三个文件都上传了

2、将drainer部署服务器的log目录下的两个文件都上传了

drainer_stderr.log (4.4 MB) drainer_mysql_drainer.toml (2.5 KB) pump.yml (1.0 KB) inventory.ini (2.2 KB) drainer.log (1.5 MB)

发现一个问题,当启动drainer失败后,drainer这个进程还存在
image


今天有时间帮忙分析下这个问题么

是不是drainer服务器16g内存不够,导致启动不了?
image

稍等,正在查看

刚才针对drainer又重新部署了一下

ansible-playbook deploy_drainer.yml

看部署情况是成功的,没有异常

之后,再重启还是有问题

实在不清楚,向哪个方向去考虑这个问题了,必须等大神出手了!



  1. 您好,请问 drainer 配置文件中的参数,您是给我时删除了,还是没有配置?

  1. 如果没有配置,请参考文档配置,重新部署下,多谢。

https://pingcap.com/docs-cn/stable/tidb-binlog/deploy-tidb-binlog/

好的,现在配置,一会看效果

修改后的配置文件,重新部署后没有问题,但启动还是不行,现象和日志 同上次原来一样。
drainer_mysql_drainer.toml (2.9 KB)

还有其他方式,能判断出是什么原因么?有详细日志输出配置么?

  1. 再启动前,请在drainer机器上确认下,是否存在drainer的进程,多谢。

  2. 如果存在 kill 进程,之后等几分钟,看看是否会自动被拉起

  3. 如果kill后会被自动拉起,ps -ef | grep 进程id 看下是哪个脚本拉起的,是否和配置的是同一个,多谢。

  4. 如果启动时没有drainer进程,请再启动时,观察drainer进程,top 命令查看,是否内存占用会一直增长,或者cpu会一直增长达到瓶颈,多谢。

  1. 再启动前,请在drainer机器上确认下,是否存在drainer的进程,多谢。

    回答:存在
  2. 如果存在 kill 进程,之后等几分钟,看看是否会自动被拉起

    回答:kill掉,会自动被拉起
  3. 如果kill后会被自动拉起,ps -ef | grep 进程id 看下是哪个脚本拉起的,是否和配置的是同一个,多谢。

    回答:和配置的是同一个,见下面的截图
  4. 如果启动时没有drainer进程,请再启动时,观察drainer进程,top 命令查看,是否内存占用会一直增长,或者cpu会一直增长达到瓶颈,多谢。

    回答:初步感觉是由于内存导致的多次重启

    是否有设置drainer占用内存的方法?


  1. 请在 drianer 部署目录/scripts 下找到 drainer stop 的脚本,执行脚本停止drainer进程。 先确保drainer进程完全停止

  2. 等到进程完全停止后,再尝试使用ansible启动,多谢。

1、使用stop脚本,确实可以停止那个进程。

2、重新使用ansible启动,还是不行。
image

查看/var/log/messages这里面的日志,可以发现,启动失败了,又重新将这个进程拉起来了