零一开源—技术|科技|资源分享 零一开源—技术|科技|资源分享

技术分享与兴趣交流

目录
【TiDB实战】TiDB 4.0离线升级至最新版5.1
/  

【TiDB实战】TiDB 4.0离线升级至最新版5.1

5.1 版本升级日志:

  • 支持 MySQL 8 中的公共表表达式 (Common Table Expression),提高了 SQL 语句的可读性与执行效率。
  • 支持对数据表列类型的在线变更,提高了业务开发的灵活性。
  • 引入一种新的统计信息类型,默认作为实验特性启用,提升查询稳定性。
  • 支持 MySQL 8 中的动态权限 (Dynamic Privileges) 配置,实现对某些操作更细粒度的控制。
  • 支持通过 Stale Read 功能直接读取本地副本数据,降低读取延迟,提升查询性能(实验特性)。
  • 新增锁视图 (Lock View) 功能方便 DBA 观察事务加锁情况以及排查死锁问题(实验特性)。
  • 新增 TiKV 后台任务写入限制(TiKV Write Rate Limiter),保证读写请求的延迟稳定性。

5.0大版本升级日志

在 5.0 版本中,我们专注于帮助企业基于 TiDB 数据库快速构建应用程序,使企业在构建过程中无需担心数据库的性能、性能抖动、安全、高可用、容灾、SQL 语句的性能问题排查等问题。

在 TiDB 5.0 版本中,你可以获得以下关键特性:

  • TiDB 通过 TiFlash 节点引入了 MPP 架构。这使得大型表连接类查询可以由不同 TiFlash 节点共同分担完成。当 MPP 模式开启后,TiDB 将会根据代价决定是否应该交由 MPP 框架进行计算。MPP 模式下,表连接将通过对 JOIN Key 进行数据计算时重分布(Exchange 操作)的方式把计算压力分摊到各个 TiFlash 执行节点,从而达到加速计算的目的。经测试,TiDB 5.0 在同等资源下,MPP 引擎的总体性能是 Greenplum 6.15.0 与 Apache Spark 3.1.1 两到三倍之间,部分查询可达 8 倍性能差异。
  • 引入聚簇索引功能,提升数据库的性能。例如,TPC-C tpmC 的性能提升了 39%。
  • 开启异步提交事务功能,降低写入数据的延迟。例如:Sysbench 设置 64 线程测试 Update index 时, 平均延迟由 12.04 ms 降低到 7.01ms ,降低了 41.7%。
  • 通过提升优化器的稳定性及限制系统任务对 I/O、网络、CPU、内存等资源的占用,降低系统的抖动。例如:测试 8 小时,TPC-C 测试中 tpmC 抖动标准差的值小于等于 2%。
  • 通过完善调度功能及保证执行计划在最大程度上保持不变,提升系统的稳定性。
  • 引入 Raft Joint Consensus 算法,确保 Region 成员变更时系统的可用性。
  • 优化EXPLAIN 功能、引入不可见索引等功能帮助提升 DBA 调试及 SQL 语句执行的效率。
  • 通过从 TiDB 备份文件到 Amazon S3、Google Cloud GCS,或者从 Amazon S3、Google Cloud GCS 恢复文件到 TiDB,确保企业数据的可靠性。
  • 提升从 Amazon S3 或者 TiDB/MySQL 导入导出数据的性能,帮忙企业在云上快速构建应用。例如:导入 1TiB TPC-C 数据性能提升了 40%,由 254 GiB/h 提升到 366 GiB/h。

简单总结就是:从各方面对性能有了较大提升,目前版本已经升级到了****5.1.1。

1.升级前的准备

1.1下载最新版本文件

版本下载地址:https://pingcap.com/zh/product-community/

选择最新的5.1.1下载

image.png

1.2更新 TiUP 离线镜像

将下载好的安装文件上传到现在运行TiDB数据库的服务器上,解压。

tar xzvf tidb-community-server-${version}-linux-amd64.tar.gz

覆盖升级,分别执行以下两行命令:

sh tidb-community-server-${version}-linux-amd64/local_install.sh
source /home/tidb/.bash_profile
ubuntu@ubuntu:~/tidb$ sh tidb-community-server-v5.1.1-linux-amd64/local_install.sh
Successfully set mirror to /home/ubuntu/tidb/tidb-community-server-v5.1.1-linux-amd64
Detected shell: bash
Shell profile:  /home/ubuntu/.bashrc
Installed path: /home/ubuntu/.tiup/bin/tiup
===============================================
1. source /home/ubuntu/.bashrc
2. Have a try:   tiup playground
===============================================
ubuntu@ubuntu:~/tidb$ 
ubuntu@ubuntu:~/tidb$ 
ubuntu@ubuntu:~/tidb$ 
ubuntu@ubuntu:~/tidb$ source /home/ubuntu/.bashrc
ubuntu@ubuntu:~/tidb$ tiup update cluster
Updated successfully!

1.3检查当前集群的健康状况

为避免升级过程中出现未定义行为或其他故障,建议在升级前对集群当前的 region 健康状态进行检查,此操作可通过 check 子命令完成。

tiup cluster check <cluster-name> --cluster

执行结束后,最后会输出 region status 检查结果。如果结果为 "All regions are healthy",则说明当前集群中所有 region 均为健康状态,可以继续执行升级;如果结果为 "Regions are not fully healthy: m miss-peer, n pending-peer" 并提示 "Please fix unhealthy regions before other operations.",则说明当前集群中有 region 处在异常状态,应先排除相应异常状态,并再次检查结果为 "All regions are healthy" 后再继续升级。

2.升级 TiDB 集群

升级的方式有两种:不停机升级和停机升级。TiUP Cluster 默认的升级 TiDB 集群的方式是不停机升级,即升级过程中集群仍然可以对外提供服务。升级时会对各节点逐个迁移 leader 后再升级和重启,因此对于大规模集群需要较长时间才能完成整个升级操作。如果业务有维护窗口可供数据库停机维护,则可以使用停机升级的方式快速进行升级操作。

2.1不停机升级

以升级到 5.1.1 版本为例:

tiup cluster upgrade <cluster-name> v5.1.1

注意:

  • 滚动升级会逐个升级所有的组件。升级 TiKV 期间,会逐个将 TiKV 上的所有 leader 切走再停止该 TiKV 实例。默认超时时间为 5 分钟(300 秒),超时后会直接停止该实例。
  • 如果不希望驱逐 leader,而希望快速升级集群至新版本,可以在上述命令中指定--force,该方式会造成性能抖动,不会造成数据损失。
  • 如果希望保持性能稳定,则需要保证 TiKV 上的所有 leader 驱逐完成后再停止该 TiKV 实例,可以指定--transfer-timeout 为一个更大的值,如--transfer-timeout 3600,单位为秒。

2.2停机升级

在停机升级前,首先需要将整个集群关停。

tiup cluster stop <cluster-name>

之后通过 upgrade 命令添加 --offline 参数来进行停机升级。

tiup cluster upgrade <cluster-name> <version> --offline

升级完成后集群不会自动启动,需要使用 start 命令来启动集群。

tiup cluster start <cluster-name>

2.3升级后验证

执行 display 命令来查看最新的集群版本 TiDB Version

tiup cluster display <cluster-name>
Cluster type:       tidb
Cluster name:       <cluster-name>
Cluster version:    v5.1.0

我是采用的不停机升级方式,下面我升级后的结果信息,整个过程非常优雅:

image.png

3.升级 FAQ

3.1 升级时报错中断,处理完报错后,如何继续升级

重新执行 tiup cluster upgrade 命令进行升级,升级操作会重启之前已经升级完成的节点。如果不希望重启已经升级过的节点,可以使用 replay 子命令来重试操作,具体方法如下:

  1. 使用tiup cluster audit 命令查看操作记录:
tiup cluster audit

在其中找到失败的升级操作记录,并记下该操作记录的 ID,下一步中将使用 <audit-id> 表示操作记录 ID 的值。

2.使用 tiup cluster replay <audit-id> 命令重试对应操作:

tiup cluster replay <audit-id>

3.2 升级过程中 evict leader 等待时间过长,如何跳过该步骤快速升级

可以指定 --force,升级时会跳过 PD transfer leaderTiKV evict leader 过程,直接重启并升级版本,对线上运行的集群性能影响较大。命令如下:

tiup cluster upgrade <cluster-name> <version> --force

3.3 升级完成后,如何更新 pd-ctl 等周边工具版本

可通过 TiUP 安装对应版本的 ctl 组件来更新相关工具版本:

tiup install ctl:v5.1.0

标题:【TiDB实战】TiDB 4.0离线升级至最新版5.1
作者:hacken
地址:https://www.01open.com/articles/2022/01/14/1642169065023.html