如何高可用部署Drainer?

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

  • 【TiDB 版本】:v3.0.8
  • 【问题描述】:目前Pump与Drainer为3+1方式部署,TiDB的配置参数为binlog.ignore-error: false

1.Drainer是否支持多副本高可用部署?

2.如何保证drainer单节点失效后TiDB对外服务正常?

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

你好,

当前 drainer 不支持多实例部署,目前还在开发中。

这边测试 drainer 故障不影响 tidb 集群的状态。

测试过程:
tidb

  1. create DATABASE asd; - yes
  2. tiup cluster stop qh -R drainer - yes
  3. drop DATABASE asd; - yes

mysql

  1. use asd - yes
  2. use asd - yes 证明 asd 数据库没有被删除

如果停止的是 pump,tidb.log 中会打印类似报错,并无法对外提供服务:

[2020/06/02 10:58:27.719 +08:00] [ERROR] [binloginfo.go:253] [“write binlog failed”] [binlog_type=Prewrite] [binlog_start_ts=417088591023308803] [binlog_commit_ts=0] [error=“write binlog failed, the last error no avaliable pump to write binlog”]

Hi 启航,这个帖子中回复说drainer 会影响2PC,那刚刚的测试关闭drainer后,是如何不影响tidb服务的? 谢谢!

你好,已更正,当时表述的意思有误,这边测试结果是上述结果,我也测试了下 pump 停止对 tidb 集群的影响,可以看下:

停止 pump


执行语句,一直等待:

tidb.log 有报错:

感谢,可否再截图看下停止drainer对tidb的影响?

这边建议自己测试下,才能更有印象哈:

停止 drainer


display 看状态

执行 asasd,忽略执行时间。。。:
image

附赠:
刚才把 pump 起来,create database asd,成功执行了:
image

好的谢谢!

:call_me_hand:

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。