关于使用tiup 升级带patch的tikv集群

请教个集群升级的问题:
当前环境:
1、当前使用tiup部署了tikv v5.2.0
2、其中tikv-server我们修改过代码,增加了几个定制化的grpc接口,部署的时候使用tiup patch的方式将源版本的tikv-server替换了

假如现在要升级集群的版本,我想首先肯定是要先装备好高版本的tiup和tikv社区版本,然后移植 v5.2.0定制化的改动到高版本tikv-server代码,并出个patch包,由于要打tikv-server的补丁包,这样是不是就不支持不停机升级?大佬们有什么好的建议

先用滚动升级到标准的5.2.x版本,再打上patch就行吧,打patch本身也是滚动的

升级的时候不是会启动tikv-server,但这个时候的版本还是社区版本,即没有定制化改造的版本,如果有请求进来找不到新增的grpc接口,接口得等到patch打上重启才能生效,中间有个时间窗口,是这样吧?

是的。

嗯,看来这样升级是个问题

采用patch这种方式,中间可能会有失败的情况,tiup有没可能自己做个包tikv-server包,替换原来的包,走热升级,查看了tiup mirror和tiup package一些工具好像有可能实现,又不太懂

patch有参数–overwrite可以替换原来的包

我知道哦,我意思是不用走patch,直接把目录里面的tikv-{version}-linux-amd.tar,gz替换了,走tiup cluster upgrade,这样整个集群是滚动热升级的,业务无感知,patch的方式,patch前调用不存在的接口会报错,业务会感知到。

  1. 做一个离线 tiup mirror
  2. 修改这个离线 mirror (打 patch)
  3. tiup upgrade

这样的步骤,是不是可以?

  1. 修改这个离线 mirror (打 patch)
    这个具体怎么操作,研究了下tiup mirror还不是很了解怎么操作:sweat_smile:

找到解决办法了:
社区版本提供的tiup管理工具支持使用编译包替换官方包的操作,具体流程应该是(我们修改的是tikv组件):
1、下载官方开源的tikv代码,根据业务需要定制化修改
2、编译出可执行程序,并打成tar.gz包
3、执行tiup mirror publish tikv v5.2.0 ./patch/tikv-v5.2.0-rc1.1-patch.tar.gz tikv-server -k ./keys/xxxxx-pingcap.json

一定要指定-k pingcap.json
后续就按照正常升级流程即可

1 个赞

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