背景
最近碰到了一个变更需求,需要为离线tidb集群安装一个PCC组件,一开始自然而然想到了利用命令tiup install PCC 来进行安装,结果提示 The component `PCC` not found (may be deleted from repository); skipped
,该组件未被发现。
查看本地镜像源,发现本地镜像源是克隆的官方v5.0.4版本的镜像源,且本地镜像源里面没有发现PCC组件的安装包,使用tiup list 命令也未发现有PCC组件可用
这说明最初部署集群克隆v5.0.4版本的镜像源的时候,官方还没有在v5.0.4的镜像源中引入PCC组件,而目在后来版本的迭代过程中引入的PCC组件(在v5.4.0版本的测试集群里发现有PCC组件可用)。
后来通过对官方文档的离线部署进行研究 使用 TiUP 部署 TiDB 集群 | PingCAP Docs ,解决了这个需求。
提笔原因
反思这次变更需求 :发现tidb作为一款金融级高可用的数据库,在很多金融场景中,为了保证安全,通常整个集群环境都是离线环境,集群部署时都是采用提前克隆官方镜像源,进行离线部署的方式。
- **这样就存在一个问题:**不能随时在线从官方仓库中下载和更新最新组件,享受版本更新带来的红利。
- 之前研究这个问题时在社区并未发现有相关案例可以进行参考,因此解决后,在测试环境上重现了我的解决过程并记录了操作步骤,发表到社区供大家学习和参考
第一步:定制PCC组件的临时镜像源
#由于之前在v5.4.0版本的镜像源里面发现有可用的PCC组件,因此我这里在另一台在线环境机器上,从v5.4.0版本的仓库里面定制我的PCC镜像源
执行命令: tiup mirror clone tiup-custom-mirror-v5.4.0 --PCC 1.0.1 --os=linux --arch=amd64
#这里可以根据自己需要的组件调整命令,例如需要组件diag v0.7.0版本,命令为: tiup mirror clone tiup-custom-mirror-v5.4.0 --diag v0.7.0 --os=linux --arch=amd64
下载完成后,可以看到名为tiup-custom-mirror-v5.4.0的目录中已经有了PCC的安装包,我们可以将该目录打包,通过u盘拷贝等方式将该PCC包发送到离线环境中解压,作为我们定制的PCC组件的临时镜像源
第二步:将PCC镜像源合并到离线环境本地镜像源中
2.1/将本地镜像源中keys目录发送到 $HOME/.tiup 目录中
执行命令: cp -r /home/tidb/tidb-community-server-v5.0.4-linux-amd64/keys /home/tidb/.tiup/
#镜像源中keys目录下存放着镜像的私钥,这一步操作是为了将本地镜像源镜像的私钥发送到执行tiup命令的用户下,这一步是后面合并临时镜像源到到本地镜像源的必要条件,更多详情参考 *tiup mirror merge | PingCAP Docs *
#本地镜像源目录可用命令tiup mirror show查看
** **
2.2/执行命令合并pcc镜像到本地镜像
执行命令: tiup mirror merge /home/tidb/tiup-custom-mirror-v5.4.0
这里可以看到执行完合并命令后,当前镜像源中可用组件已经有了可用的PCC组件
第三步:直接从本地镜像源中安装PCC组件
执行命令: tiup install PCC
这里可以看到PCC组件已安装成功,可以使用
#感兴趣可以进入到本地镜像源目录,发现PCC的安装包已经再本地镜像源中存在
作者想说
**1/整套操作流程总结起来:**其实就是在线的从高版本的官方镜像源中需要的组件制作成临时镜像源,再将临时镜像源合并到离线环境的本地镜像源中,从而实现了在离线环境本地镜像源中使用高版本组件的目的
2/欢迎大家对本文不足之处进行指正