Tidb集群升级到8.5.0过程中服务器遇到的坑

devtools/2025/1/19 22:39:21/

GLIBC_215__GLIBC_228YUM__0">TiDB 集群升级到8.5.0踩坑记:从 GLIBC_2.15 升级到 GLIBC_2.28YUM 仓库问题的全面解决


1. 引言

作为部门的负责人,我常常觉得自己是个“救火队员”。昨天 TiDB 集群又出问题了:查询卡顿、响应时间变长,重启之后问题依旧。临近下班,来这一手,全面检查无果之后,决定对 TiDB 集群进行升级。然而,升级的过程就像打怪升级一样,一关接着一关,从 GLIBC 升级到 YUM 仓库问题,简直是“运维人的九九八十一难”!

这篇文章将记录我从发现问题到解决问题的全过程,顺便吐槽一下运维服务器的辛酸。


2. 问题描述

2.1 TiDB 集群性能问题

TIDB集群一致很稳定,但是昨天,查询突然变慢,内存、CPU显示都正常。简单的查询甚至超时。查看集群后台的状态,发现大量的SQL处在查询状态,无法杀死也无法查出结果,我尝试重启集群,但问题依旧。于是,我决定升级 TiDB 集群,希望能通过新版本修复问题。
在这里插入图片描述

2.2 升级依赖问题

然而,升级 TiDB 集群并不是一件简单的事情。首先,服务器上的核心组件(如 makegccglibc-2.28)需要升级。结果,升级这些组件的过程中,又遇到了 YUM 仓库的各种报错,简直是“一波未平,一波又起”!
在这里插入图片描述
TIDB集群升级到8.5.0之后,需要依赖GLIBC_2.28版本,不升级则会一致启动失败。

2.3 YUM 仓库报错

在升级过程中,YUM 仓库频繁报错,导致无法正常下载和安装软件包。每次报错都让我心头一紧,仿佛在玩“扫雷”游戏,不知道下一步会踩到什么坑。
在这里插入图片描述


3. 报错详情

以下是升级过程中遇到的主要报错信息:

  1. /lib64/libc.so.6: version 'GLIBC_2.28' not found

    • 这个错误告诉我,系统缺少 GLIBC 2.28 版本,而 TiDB 依赖的库需要这个版本才能正常运行。
  2. These critical programs are missing or too old: compiler

    • 这个错误表明,编译器 gccmake版本过低或缺失,无法满足升级需求。我升级的是make-4.3,gcc-8.3.1
  3. Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"

    • YUM 无法从 CentOS 官方镜像源获取仓库列表,可能是网络问题或镜像源不可用。
  4. failure: repodata/repomd.xml from kubernetes: [Errno 256] No more mirrors to try.

    • YUM 无法从 Kubernetes 仓库下载元数据文件,可能是仓库地址失效或网络问题。
  5. http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/6.0/x86_64/repodata/primary.xml.gz: [Errno 14] curl#63 - "Callback aborted"

    • YUM 在下载 MongoDB 仓库的元数据文件时失败

4. 问题分析

GLIBC__54">4.1 GLIBC 版本过低

TiDB 集群依赖的库需要 GLIBC 2.28 版本,而服务器上的 GLIBC 版本过低,导致无法正常运行。

4.2 编译器版本过低

升级 GLIBC 需要较新的编译器(如 gcc),而服务器上的 gcc 版本过低,无法满足编译需求。

4.3 YUM 仓库问题

YUM 仓库报错的主要原因是镜像源不可用或网络问题。CentOS 官方镜像源和阿里云镜像源都可能出现临时不可用的情况。


5. 解决方案

GLIBC_228_70">5.1 升级 GLIBC 2.28

GLIBC 是 Linux 系统的核心库,升级它需要谨慎操作。我通过下载源码并编译的方式完成了升级。
升级2.28版本的文章

5.2 升级 gcc 和 make

为了编译 GLIBC,我需要升级 gccmake。通过安装 devtoolset,我成功获取了较新的 gcc 版本。
升级make的文章

5.3 解决 YUM 仓库报错

YUM 仓库报错的问题通过更换镜像源和清理缓存得以解决。我使用了阿里云的镜像源,并手动清理了 YUM 缓存。
解决yum makecache报错问题

5.4 解决 mongodb-org "Callback aborted"仓库报错

打开 MongoDB 仓库配置文件(如 /etc/yum.repos.d/mongodb-**.repo)。
在这里插入图片描述

确保 enabled 参数的值为 0 或 1,并删除多余的注释或字符。
在这里插入图片描述


6. 总结与建议

这次 TiDB 集群升级的过程让我深刻体会到运维工作的不易。从 GLIBC 升级到 YUM 仓库问题,每一步都充满了挑战。然而,正是这些挑战让我不断学习和成长。

如果你也遇到了类似的问题,不要灰心!通过仔细分析和耐心排查,问题总能解决。当然,如果你有更好的解决方案,欢迎在评论区分享!
在这里插入图片描述


希望这篇文章能帮助到正在踩坑的你!运维之路虽然艰辛,但每一次解决问题的成就感都是无可替代的。加油!💪


http://www.ppmy.cn/devtools/151935.html

相关文章

机器学习中的方差与偏差

文章目录 方差与偏差1.1 数据1.1.1 数据的分布1.1.2 拟合 1.2 方差与偏差1.2.1 泛化误差的拆分1.2.2 理解方差偏差 1.3 方差-偏差trade-off1.3.1 方差-偏差trade-off1.3.2 方差与偏差诊断 1.4 降低策略1.4.1 噪声1.4.2 高偏差1.4.3 高方差 方差与偏差 1.1 数据 1.1.1 数据的分…

汽车免拆诊断案例 | 2007 款法拉利 599 GTB 车发动机故障灯异常点亮

故障现象  一辆2007款法拉利599 GTB车,搭载6.0 L V12自然吸气发动机(图1),累计行驶里程约为6万km。该车因发动机故障灯异常点亮进厂检修。 图1 发动机的布置 故障诊断 接车后试车,发动机怠速轻微抖动,…

生产环境中常用的设计模式

生产环境中常用的设计模式 设计模式目的使用场景示例单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点- 日志记录器- 配置管理器工厂方法模式定义一个创建对象的接口,让子类决定实例化哪个类- 各种工厂类(如视频游戏工厂模式创…

C#高级:用Csharp操作鼠标和键盘

一、winform 1.实时获取鼠标位置 public Form1() {InitializeComponent();InitialTime(); }private void InitialTime() {// 初始化 Timer 控件var timer new System.Windows.Forms.Timer();timer.Interval 100; // 设置为 100 毫秒,即每 0.1 秒更新一次timer.…

《机器学习》——SVD(奇异分解)降维

文章目录 SVD基本定义SVD降维的步骤SVD降维使用场景SVD 降维的优缺点SVD降维实例导入所需库定义SVD降维函数导入图像处理图像处理图像打印降维结果并显示处理后两个图像的对比图 SVD基本定义 简单来说就是,通过SVD(奇异值分解)对矩阵数据进行…

基于 Python 和 Django 的课程管理系统设计与实现

标题:基于 Python 和 Django 的课程管理系统设计与实现 内容:1.摘要 摘要:本文介绍了基于 Python 和 Django 的课程管理系统的设计与实现。文章首先阐述了课程管理系统的背景和意义,接着详细描述了系统的设计与实现过程,包括系统架构、功能模…

nginx 配置ssl_dhparam好处及缺点

ssl_dhparam 是 Nginx 配置指令之一,用于配置 Diffie-Hellman 参数,这是一种用于密钥交换的加密算法。配置 Diffie-Hellman 参数可以提高 SSL/TLS 的安全性。 以下是 ssl_dhparam 的优点和缺点: 优点: 提高 SSL/TLS 安全性&…

6、原来可以这样理解C语言_函数(1/8)函数的概念

目录 一、函数的概念 一、函数的概念 数学中我们其实就⻅过函数的概念,⽐如:⼀次函数 ykxb ,k和b都是常数,给⼀个任意的x,就 得到⼀个y值。 其实在C语⾔也引⼊函数(function)的概念&#xff0c…