一、正确步骤
首先说下我觉得缩容binlog的正确步骤:
1.关闭binlog
tiup cluster edit-config cluster_name
#去掉下面图片的binlog相关配置,然后重新加载配置
tiup cluster reload cluster_name
2.缩容drainer,pump
2.1binlogctl(比较推荐):
# 详细操作可以看官网:https://docs.pingcap.com/zh/tidb/v4.0/binlog-control#binlogctl-工具
tiup ctl binlog -pd-urls=http://127.0.0.1:2379 -cmd offline-pump -node-id ip-127-0-0-1:8250
tiup ctl binlog -pd-urls=http://127.0.0.1:2379 -cmd offline-drainer -node-id ip-127-0-0-1:8250
2.2scale-in(比较方便):
tiup cluster scale-in cluster_name -N 192.168.1.1:8250
二、错误原因及解决
1.操作
没有关闭binlog就缩容了pump
2.现象
tidb没有流量进入,tidb服务起来很快就会宕掉,查看内存使用的很少,dmesg -T也没有发现oom的现象,应用无法连接数据库
3.原因
查看tidb.log,发现有如下报错
[2022/03/23 02:58:17.223 +00:00] [FATAL] [conn.go:858] ["critical error, stop the server"] [conn=242] [error="previous statement: sql [global:3]critical error write binlog failed, the last error rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing dial tcp 192.168.1.1:8250: connect: connection refused\""] [stack="github.com/pingcap/tidb/server.(*clientConn).Run\n\t/home/jenkins/agent/workspace/optimization-build-tidb-linux-amd/go/src/github.com/pingcap/tidb/server/conn.go:858\ngithub.com/pingcap/tidb/server.(*Server).onConn\n\t/home/jenkins/agent/workspace/optimization-build-tidb-linux-amd/go/src/github.com/pingcap/tidb/server/server.go:453"]
这个是因为tidb需要把sql发送到pump上,但因为pump已经缩容了,所以一直不能链接pump节点,tidb就会自己宕机重启
4.解决
将binlog关闭即可
操作不规范,亲人两行泪啊