记一次 tidb 离线环境下安装非本地镜像源组件的过程
背景
最近碰到了一个变更需求,需要为离线 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/ 欢迎大家对本文不足之处进行指正
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/346753eeaf218fe6bdcbcf0ce】。文章转载请联系作者。
评论