0
2
2
0
专栏/.../

TiDB 版本升级的小 Tips

 WalterWj  发表于  2024-04-02

TiDB 版本说明

TiDB 版本定义规则

TiDB 版本的命名方式为 X.Y.Z。X.Y 代表一个版本系列。

  1. 从 TiDB 1.0 起,X 每年依次递增,X 的递增代表引入新的功能和改进。
  2. Y 从 0 开始依次递增,Y 的递增代表引入新的功能和改进。
  3. 一个版本系列首次发布时 Z 默认为 0,后续发补丁版本时 Z 从 1 开始依次递增。

长期支持版本 (Long-Term Support Releases, LTS) 约每六个月发布一次,会引入新功能、改进、缺陷修复和安全漏洞修复。注意非 LTS 版本企业级服务不完善(比如需要 Hotfix 解决问题)

LTS 维护周期

TiDB LTS 版本都是有维护周期的,且只有 LTS 版本才提供代码级别的修复(hotfix)。对于 LTS 版本,我们有 3 个层面的支持:

  1. Maintenance Support:在该版本的维护周期内,如果出现 BUG,会按照需求进行对应版本迭代,即版本 Z 位数的变更
  2. Extended Support:可以提供企业级服务,对于在时间周期中遇到的严重 BUG,可以申请 Hotfix 补丁方式,定制出同版本修复包。
  3. End of Life (EOL): 在 Extended 周期结束之后,PingCAP 就不对该版本提供修复及技术支持服务。遇到问题只能想办法使用 workaround 绕过或者升级,无法提供补丁方式修复

具体细节和维护时间可见:https://cn.pingcap.com/tidb-release-support-policy/

重点关注

  1. v3.0 在 2023-09-25 已经过了 EOL,v4.0、v5.0 版本会 2024-04 月初过 EOL 周期。
  2. v5.3 及以下,都会在 2024 过 EOL 周期。

当使用版本过了 EOL 周期后,是很难直接提供代码级别的问题修复,且由于代码较旧,问题定位相对会比较麻烦,时效性很难保证。

版本升级注意事项

由于 TiDB 版本升级是属于高风险的重大变更,为保障升级工作的顺利开展,特提供以下文档帮助客户开展升级前检查工作。

升级版本选择

  1. 检查当前版本

  2. 确定目标版本

    1. 登录 github 检查版本是否存在符合使用场景但是没有修复的 bug
    2. 推荐使用 LTS 版本最新 patch 的版本
  3. 是否为版本跨度大的升级

查官方文档确认版本升级线路是否支持

  1. 明确此次升级需求

集群健康状况

  1. 确认集群拓扑结构是否满足高可用需求

  2. 集群拓扑是否健康

  3. 硬件配置是否达标

  4. 集群使用情况

    1. 集群数据量
    2. 大表情况
    3. 表宽度,字段数量
    4. SQL 语句 DDL\DML 执行情况 QPS
    5. 字符集等兼容情况

检查升级技术线路

  • 原地升级

    • 原地停机升级
    • 原地滚动升级: 需要关注对业务的影响和组件副本
  • 迁移升级

  • 升级时间估算

  • 后备计划时间估算

升级预案检查

  • 制定应急预案
  • 降级预案
  • 回退方式
  • 逃生通道

TiDB暂不支持版本降级或升级后回退,可以使用迁移升级的方案

版本配置变更检查

检查升级前后版本系统变量、配置项差异对比

  1. 参数对比专栏 - TiDB 升级利器(参数对比)——TiDBA | TiDB 社区
  2. 手动查询收集信息
查询变量
select @@tidb_config\G;
show variables\G;
show config where type='tidb';
查询系统表
select * from cluster_config;
select * from VARIABLES_INFO;

检查维度

  1. 关注默认值对版本变化
  2. 关注使用了非默认值的变量或配置项
  3. 关注配置项发生移除或新增
  4. 关注新特性
  5. 是否有和使用相关 Issue

参考

  1. 专栏 - TiDB 升级利器(参数对比)——TiDBA | TiDB 社区
  2. 使用 TiUP 升级 TiDB 升级兼容性说明

实践案例

以下是6.5版本之后相比之前版本默认值有变更的部分比较核心配置,但是从低版本升级上来默认值有可能没有被正确设置。下面的设置都是最新的默认值行为可以作为参考,请结合业务情况设置。

注:如果升级的后的版本不是LTS版本最新patch的版本,请关注登录 github 检查版本是否存在符合使用场景但是没有修复的 bug,部分场景遇到 bug 可需要将参数设置为之前版本的默认参数。

-- tidb 配置推荐添加:
config:
  tmp-dir:/data1/tidb-deploy/tidb-4000/dcl_tmp
  tmp-storage-path:/data1/tidb-deploy/ticb-4000/oom_tmp

set global tidb_server_memory_limit="80%";     --该参数请根据实际情况调整
set global tidb_enable_rate_limit_action=false;
set global tidb_enable_paging=ON;
set global tidb_enable_pseudo_for_outdated_stats=OFF;
set global tidb_enable_outer_join_reorder=ON;
set global tidb_stats_load_sync_wait=100;
set global tidb_stats_load_pseudo_timeout=ON;
set global tidb_enable_index_merge=ON;
set global tidb_prepared_plan_cache_size = 50;
TiDB Server 实例内存阈值 <= 64 GiB 时,tidb_prepared_plan_cache_size = 50
TiDB Server 实例内存阈值 > 64 GiB 时,tidb_prepared_plan_cache_size = 100

tidb_ddl_enable_fast_reorg 从 v6.3.0 版本开始引入6.5默认值为on,正确使用是需要正确配置temp-dir,且 tidb 有权限对 dir 有读写权限,配置不正确的话该功能可以关闭
set global tidb_ddl_enable_fast_reorg = off;

-- 使用新代价模型,统计信息需要重新收集生效(手动 Analyze table)。可以提前导出一份老的统计信息。
set global tidb_cost_model_version=2;
set global tidb_analyze_version =2;

0
2
2
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论