ngvf
(Ngvf)
1
【概述】 场景 + 问题概述
现在项目上做TiDB升级:从5.1.2升级到5.2.0, TiDB角色做了haproxy,持续插入数据过程,根据官方文档做不停机升级操作, 插入数据的会话连接还是会断开,当然也可以理解毕竟要升级TiDB角色,会话肯定是要断开的.
【现象】 业务和数据库现象
持续插入数据失败
【问题】 当前遇到的问题
问题1:TiDB官方说不停机升级,即升级过程中集群仍然可以对外提供服务, 然而对会话会断开的问题,我该怎么去理解这个事情呢?
问题2:针对问题1,处理只能是 如果连接断开,客户端去重连吗?还有其他的方式吗?
【TiDB 版本】v5.1.2
3 个赞
h5n1
(H5n1)
2
滚动重启,一个个接一个的,只是要升级重启的那个tidbserver的连接断开,其他的还能提供服。客户端重连得看应用了
4 个赞
这个应该是客户端和tidbserver进程之间的链接断开了。tcp长链接本身就可能会断开,各种原因,因此程序本身就该处理断开重连。
4 个赞
啦啦啦啦啦
5
和mysql主从切换类似,切换的过程中老连接肯定要断,依赖程序的重连机制
4 个赞
Kongdom
(Kongdom)
6
不停机升级应该是主要保证短连接吧,长连接应该是保证不了~
3 个赞
数据小黑
(数据小黑)
7
我理解不停机升级,是指集群整体能够持续提供服务,局部的小范围的服务中断,是避免不了的。其实nginx有链接失败,重定向请求的能力,但是不建议应用,前端做好重试和提示,需要长时间操作的功能做好周期性的save是我见到最常见的方式。一般我们不停机升级,也是在低峰时间做,影响也比较小。
4 个赞
可以tidb前面套一层MySQL proxy,比如kingshard这种,应该可以不断client链接处理tidb服务重启的问题。
4 个赞
ngvf
(Ngvf)
9
你好,你说的短连接问题,我提出一个疑问呢?就是一个查询语言,假设查询4秒,在我发送请求后,这个tidbserver刚好升级,这时还能正常返回查询的值吗?
问题1:TiDB官方说不停机升级,即升级过程中集群仍然可以对外提供服务, 然而对会话会断开的问题,我该怎么去理解这个事情呢? ---- 集群可用是说新的会话,原来老的会断掉
问题2:针对问题1,处理只能是 如果连接断开,客户端去重连吗?还有其他的方式吗? —只能重连
ngvf
(Ngvf)
13
第一个问题:集群可用是指的是其他的tidb_server可用,正在升级的tidb_server节点不可用,可用的对象是集群,不是会话级别.
第二个问题:只能去重新建立连接,不过你可以给tidb_server做一个haproxy, 最后你重连haproxy中的代理就行
数据小黑
(数据小黑)
14
不停机升级主要是应用服务的可持续性,通俗讲就是升级过程中应用服务在线,可以不考虑服务的质量。
多谢!但这个不是完全由tidb本身提供的无损升级,需要其他服务支持
system
(system)
关闭
17
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。