写点什么

Copilot 的魔法让 TiDB 离线升级变得轻松愉快

  • 2024-04-26
    北京
  • 本文字数:4977 字

    阅读完需:约 16 分钟

作者: madcoder 原文来源:https://tidb.net/blog/4837974d

下载离线镜像

TiDB 社区版地址

更新 TiUP 离线镜像

可以参考使用 TiUP 部署 TiDB 集群 的步骤下载部署新版本的 TiUP 离线镜像,上传到中控机。在执行 local_install.sh 后,TiUP 会完成覆盖升级。


tar xzvf tidb-community-server-${version}-linux-amd64.tar.gzsh tidb-community-server-${version}-linux-amd64/local_install.shsource /home/tidb/.bash_profile  #  这里应该是source /home/tidb/.bashrc
复制代码


使用 Tiup -version 检查升级后的版本


覆盖升级完成后,需将 server 和 toolkit 两个离线镜像合并,执行以下命令合并离线组件到 server 目录下。


tar xf tidb-community-toolkit-${version}-linux-amd64.tar.gzls -ld tidb-community-server-${version}-linux-amd64 tidb-community-toolkit-${version}-linux-amd64cd tidb-community-server-${version}-linux-amd64/cp -rp keys ~/.tiup/tiup mirror merge ../tidb-community-toolkit-${version}-linux-amd64
复制代码


离线镜像合并后,执行下列命令升级 Cluster 组件:


tiup update cluster tidb v8.0.0
复制代码


如果记录只是这些那真没有必要,因为官方文档已经很详细了,升级也就那么几步。但是越简单重复的工作越容易出错,怎样避免将错误降低,把容易犯错的步骤交给机器。

自动升级

让 Copilot 给出你想要的脚本



### **更新 TiUP 离线镜像**
可以参考[使用 TiUP 部署 TiDB 集群](https://docs.pingcap.com/zh/tidb/stable/production-deployment-using-tiup)的步骤下载部署新版本的 TiUP 离线镜像,上传到中控机。在执行 `local_install.sh` 后,TiUP 会完成覆盖升级。
// 省略...将上面升级步骤丢给Copilot
Copilot
您的步骤看起来是正确的。这是一个基本的过程,用于更新 TiUP 离线镜像并升级 TiDB 集群。如果在执行这些步骤后 TiUP 运行出现错误,那可能是由于 manifest 文件未更新。在这种情况下,您可以尝试运行 **`rm -rf ~/.tiup/manifests/*`** 来删除旧的 manifest 文件,然后再次使用 TiUP。
请注意,每次执行这些步骤时,都需要将 **`${version}`** 替换为您要安装或升级的 TiDB 版本号。
如果您在执行这些步骤时遇到任何问题,或者需要进一步的帮助,随时向我提问。我会尽我所能提供帮助。😊

根据我提供的内容生成bash脚本Copilot
当然,这是一个基于您提供的步骤生成的 bash 脚本。请注意,您需要根据实际情况替换 **`${version}`** 和 **`v8.0.0`**。
`#!/bin/bash
# 定义版本version="v8.0.0"
# 解压 TiDB 社区服务器tar xzvf tidb-community-server-${version}-linux-amd64.tar.gz
# 执行本地安装脚本sh tidb-community-server-${version}-linux-amd64/local_install.sh
# 更新 bashrcsource /home/tidb/.bashrc
# 检查 TiUP 版本tiup -version
# 解压工具包tar xf tidb-community-toolkit-${version}-linux-amd64.tar.gz
# 列出服务器和工具包目录ls -ld tidb-community-server-${version}-linux-amd64 tidb-community-toolkit-${version}-linux-amd64
# 切换到服务器目录cd tidb-community-server-${version}-linux-amd64/
# 复制密钥cp -rp keys ~/.tiup/
# 合并离线组件到服务器目录tiup mirror merge ../tidb-community-toolkit-${version}-linux-amd64
# 升级 Cluster 组件tiup update cluster tidb ${version}
# 如果 TiUP 运行报错,尝试删除旧的 manifest 文件if [ $? -ne 0 ]; then rm -rf ~/.tiup/manifests/*fi`
这个脚本应该能帮助您自动化 TiUP 离线镜像的更新和 TiDB 集群的升级过程。在运行此脚本之前,请确保您已经正确地设置了 **`version`** 变量,并且所有的 tar.gz 文件都在当前目录下。如果在运行过程中遇到任何问题,欢迎随时向我提问。😊

版本号在脚本外输入,在检查TiUP后插入,是否进入下一步,输入Y继续
Copilot
好的,根据您的要求,我修改了脚本。现在,脚本会在检查 TiUP 版本后提示您是否继续。如果您输入 ‘Y’ 或 ‘y’,脚本将继续执行。此外,脚本现在会在开始时提示您输入版本号。
`#!/bin/bash
# 提示用户输入版本号read -p "请输入版本号: " version
# 解压 TiDB 社区服务器tar xzvf tidb-community-server-${version}-linux-amd64.tar.gz
# 执行本地安装脚本sh tidb-community-server-${version}-linux-amd64/local_install.sh
# 更新 bashrcsource /home/tidb/.bashrc
# 检查 TiUP 版本tiup -version
# 提示用户是否继续read -p "是否继续? (Y/n): " answerif [[ $answer != "Y" && $answer != "y" ]]; then echo "脚本已终止。" exit 1fi
# 解压工具包tar xf tidb-community-toolkit-${version}-linux-amd64.tar.gz
# 列出服务器和工具包目录ls -ld tidb-community-server-${version}-linux-amd64 tidb-community-toolkit-${version}-linux-amd64
# 切换到服务器目录cd tidb-community-server-${version}-linux-amd64/
# 复制密钥cp -rp keys ~/.tiup/
# 合并离线组件到服务器目录tiup mirror merge ../tidb-community-toolkit-${version}-linux-amd64
# 升级 Cluster 组件tiup update cluster tidb ${version}
# 如果 TiUP 运行报错,尝试删除旧的 manifest 文件if [ $? -ne 0 ]; then rm -rf ~/.tiup/manifests/*fi`
这个脚本应该满足您的需求。如果有任何问题,或者需要进一步的帮助,欢迎随时向我提问。😊

还是不够严谨,需要在解压前检查文件是否存在,在更新 前也需要询问是否继续
Copilot
您的反馈非常重要,我理解您希望脚本在执行关键步骤之前进行更多的检查。以下是根据您的要求修改的脚本:
`#!/bin/bash
# 提示用户输入版本号read -p "请输入版本号: " version
# 检查文件是否存在if [[ ! -f tidb-community-server-${version}-linux-amd64.tar.gz ]] || [[ ! -f tidb-community-toolkit-${version}-linux-amd64.tar.gz ]]; then echo "文件不存在,请检查版本号和文件路径。" exit 1fi
# 解压 TiDB 社区服务器tar xzvf tidb-community-server-${version}-linux-amd64.tar.gz
# 执行本地安装脚本sh tidb-community-server-${version}-linux-amd64/local_install.sh
# 更新 bashrcsource /home/tidb/.bashrc
# 检查 TiUP 版本tiup -version
# 提示用户是否继续read -p "是否继续? (Y/n): " answerif [[ $answer != "Y" && $answer != "y" ]]; then echo "脚本已终止。" exit 1fi
# 解压工具包tar xf tidb-community-toolkit-${version}-linux-amd64.tar.gz
# 列出服务器和工具包目录ls -ld tidb-community-server-${version}-linux-amd64 tidb-community-toolkit-${version}-linux-amd64
# 切换到服务器目录cd tidb-community-server-${version}-linux-amd64/
# 复制密钥cp -rp keys ~/.tiup/
# 合并离线组件到服务器目录tiup mirror merge ../tidb-community-toolkit-${version}-linux-amd64
# 提示用户是否继续read -p "是否继续升级? (Y/n): " answerif [[ $answer != "Y" && $answer != "y" ]]; then echo "脚本已终止。" exit 1fi
# 升级 Cluster 组件tiup update cluster tidb ${version}
# 如果 TiUP 运行报错,尝试删除旧的 manifest 文件if [ $? -ne 0 ]; then rm -rf ~/.tiup/manifests/*fi`
这个脚本现在会在解压文件和升级 Cluster 组件之前检查文件是否存在和询问用户是否继续。如果有任何问题,或者需要进一步的帮助,欢迎随时向我提问。😊

集群tidb名字也需要输入
Copilot
好的,我已经将脚本修改为在升级 Cluster 组件之前提示您输入集群的名字。以下是修改后的脚本:
`#!/bin/bash
# 提示用户输入版本号read -p "请输入版本号: " version
# 检查文件是否存在if [[ ! -f tidb-community-server-${version}-linux-amd64.tar.gz ]] || [[ ! -f tidb-community-toolkit-${version}-linux-amd64.tar.gz ]]; then echo "文件不存在,请检查版本号和文件路径。" exit 1fi
# 解压 TiDB 社区服务器tar xzvf tidb-community-server-${version}-linux-amd64.tar.gz
# 执行本地安装脚本sh tidb-community-server-${version}-linux-amd64/local_install.sh
# 更新 bashrcsource /home/tidb/.bashrc
# 检查 TiUP 版本tiup -version
# 提示用户是否继续read -p "是否继续? (Y/n): " answerif [[ $answer != "Y" && $answer != "y" ]]; then echo "脚本已终止。" exit 1fi
# 解压工具包tar xf tidb-community-toolkit-${version}-linux-amd64.tar.gz
# 列出服务器和工具包目录ls -ld tidb-community-server-${version}-linux-amd64 tidb-community-toolkit-${version}-linux-amd64
# 切换到服务器目录cd tidb-community-server-${version}-linux-amd64/
# 复制密钥cp -rp keys ~/.tiup/
# 合并离线组件到服务器目录tiup mirror merge ../tidb-community-toolkit-${version}-linux-amd64
# 提示用户输入集群名字read -p "请输入集群名字: " cluster_name
# 提示用户是否继续read -p "是否继续升级? (Y/n): " answerif [[ $answer != "Y" && $answer != "y" ]]; then echo "脚本已终止。" exit 1fi
# 升级 Cluster 组件tiup update cluster ${cluster_name} ${version}
# 如果 TiUP 运行报错,尝试删除旧的 manifest 文件if [ $? -ne 0 ]; then rm -rf ~/.tiup/manifests/*fi`
这个脚本现在会在升级 Cluster 组件之前提示您输入集群的名字。如果有任何问题,或者需要进一步的帮助,欢迎随时向我提问。😊
复制代码

执行结果

bash updatetidb.sh  v8.0.0Disable telemetry successSuccessfully set mirror to /opt/tidb/tidb-community-server-v8.0.0-linux-amd64Detected shell: bashShell profile:  /home/tidb/.bashrcInstalled path: /home/tidb/.tiup/bin/tiup===============================================1. source /home/tidb/.bashrc2. Have a try:   tiup playground===============================================1.15.0 tiupGo Version: go1.21.8Git Ref: v1.15.0GitHash: 48f15f405450faf7d57136e629285724a0713cdeTiup升级完成,是否继续合并离线镜像? (Y/n): Ydrwxr-xr-x 4 tidb tidb 4096 Apr  1 18:33 tidb-community-server-v8.0.0-linux-amd64drwxr-xr-x 3 tidb tidb 4096 Apr  1 18:35 tidb-community-toolkit-v8.0.0-linux-amd64是否继续升级集群? (Y/n): Y请输入集群名字: tidbBefore the upgrade, it is recommended to read the upgrade guide at https://docs.pingcap.com/tidb/stable/upgrade-tidb-using-tiup  and finish the preparation steps.This operation will upgrade tidb v8.0.0 cluster tidb to v8.0.0:will upgrade and restart component "                 pd" to "v8.0.0",will upgrade and restart component "               tikv" to "v8.0.0",will upgrade and restart component "               tidb" to "v8.0.0",will upgrade and restart component "         prometheus" to "v8.0.0",will upgrade and restart component "            grafana" to "v8.0.0",will upgrade and restart component "       alertmanager" to "",will upgrade component     "node-exporter" to "",will upgrade component "blackbox-exporter" to "".Do you want to continue? [y/N]:(default=N) yUpgrading cluster...#.....Upgraded cluster `tidb` successfully
复制代码


本文记录了如何在离线环境中升级 TiDB,以及如何在日常工作中使用 Copilot。Copilot 在生成脚本方面表现出了实用性,它能够根据用户的需求生成具体的脚本,从而简化了升级过程。同时,Copilot 也是一个强大的搜索引擎,它能够提供丰富的信息和知识,帮助用户解决问题。


然而,使用 Copilot 也需要一定的审查能力。虽然 Copilot 的目标是提供最准确和最相关的信息,但有时候它也可能会提供一些不准确或者不相关的信息。这就需要用户对 Copilot 的输出进行审查,确保信息的准确性和可靠性。Copilot 一本正经的胡说八道,有可能你就当真了。


发布于: 刚刚阅读数: 2
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
Copilot的魔法让TiDB离线升级变得轻松愉快_版本测评_TiDB 社区干货传送门_InfoQ写作社区