问一下对TiDB不停机升级的理解

【概述】 场景 + 问题概述
现在项目上做TiDB升级:从5.1.2升级到5.2.0, TiDB角色做了haproxy,持续插入数据过程,根据官方文档做不停机升级操作, 插入数据的会话连接还是会断开,当然也可以理解毕竟要升级TiDB角色,会话肯定是要断开的.

【现象】 业务和数据库现象
持续插入数据失败

【问题】 当前遇到的问题
问题1:TiDB官方说不停机升级,即升级过程中集群仍然可以对外提供服务, 然而对会话会断开的问题,我该怎么去理解这个事情呢?
问题2:针对问题1,处理只能是 如果连接断开,客户端去重连吗?还有其他的方式吗?

【TiDB 版本】v5.1.2

3赞

滚动重启,一个个接一个的,只是要升级重启的那个tidbserver的连接断开,其他的还能提供服。客户端重连得看应用了

4赞

应用代码在丢失连接后要能自动重连proxy

4赞

这个应该是客户端和tidbserver进程之间的链接断开了。tcp长链接本身就可能会断开,各种原因,因此程序本身就该处理断开重连。

4赞

和mysql主从切换类似,切换的过程中老连接肯定要断,依赖程序的重连机制

4赞

不停机升级应该是主要保证短连接吧,长连接应该是保证不了~

3赞

我理解不停机升级,是指集群整体能够持续提供服务,局部的小范围的服务中断,是避免不了的。其实nginx有链接失败,重定向请求的能力,但是不建议应用,前端做好重试和提示,需要长时间操作的功能做好周期性的save是我见到最常见的方式。一般我们不停机升级,也是在低峰时间做,影响也比较小。

4赞

可以tidb前面套一层MySQL proxy,比如kingshard这种,应该可以不断client链接处理tidb服务重启的问题。

4赞

你好,你说的短连接问题,我提出一个疑问呢?就是一个查询语言,假设查询4秒,在我发送请求后,这个tidbserver刚好升级,这时还能正常返回查询的值吗?

应该是不会正常返回了~

1赞

好的 谢谢了

问题1:TiDB官方说不停机升级,即升级过程中集群仍然可以对外提供服务, 然而对会话会断开的问题,我该怎么去理解这个事情呢? ---- 集群可用是说新的会话,原来老的会断掉
问题2:针对问题1,处理只能是 如果连接断开,客户端去重连吗?还有其他的方式吗? —只能重连

第一个问题:集群可用是指的是其他的tidb_server可用,正在升级的tidb_server节点不可用,可用的对象是集群,不是会话级别.
第二个问题:只能去重新建立连接,不过你可以给tidb_server做一个haproxy, 最后你重连haproxy中的代理就行