TiDB 版本说明
TiDB 版本定义规则
TiDB 版本的命名方式为 X.Y.Z。X.Y 代表一个版本系列。
- 从 TiDB 1.0 起,X 每年依次递增,X 的递增代表引入新的功能和改进。
- Y 从 0 开始依次递增,Y 的递增代表引入新的功能和改进。
- 一个版本系列首次发布时 Z 默认为 0,后续发补丁版本时 Z 从 1 开始依次递增。
长期支持版本 (Long-Term Support Releases, LTS) 约每六个月发布一次,会引入新功能、改进、缺陷修复和安全漏洞修复。注意非 LTS 版本企业级服务不完善(比如需要 Hotfix 解决问题)
LTS 维护周期
TiDB LTS 版本都是有维护周期的,且只有 LTS 版本才提供代码级别的修复(hotfix)。对于 LTS 版本,我们有 3 个层面的支持:
- Maintenance Support:在该版本的维护周期内,如果出现 BUG,会按照需求进行对应版本迭代,即版本 Z 位数的变更
- Extended Support:可以提供企业级服务,对于在时间周期中遇到的严重 BUG,可以申请 Hotfix 补丁方式,定制出同版本修复包。
- End of Life (EOL): 在 Extended 周期结束之后,PingCAP 就不对该版本提供修复及技术支持服务。遇到问题只能想办法使用 workaround 绕过或者升级,无法提供补丁方式修复
具体细节和维护时间可见:https://cn.pingcap.com/tidb-release-support-policy/
重点关注
- v3.0 在 2023-09-25 已经过了 EOL,v4.0、v5.0 版本会 2024-04 月初过 EOL 周期。
- v5.3 及以下,都会在 2024 过 EOL 周期。
当使用版本过了 EOL 周期后,是很难直接提供代码级别的问题修复,且由于代码较旧,问题定位相对会比较麻烦,时效性很难保证。
版本升级注意事项
由于 TiDB 版本升级是属于高风险的重大变更,为保障升级工作的顺利开展,特提供以下文档帮助客户开展升级前检查工作。
升级版本选择
-
检查当前版本
-
确定目标版本
- 登录 github 检查版本是否存在符合使用场景但是没有修复的 bug
- 推荐使用 LTS 版本最新 patch 的版本
-
是否为版本跨度大的升级
查官方文档确认版本升级线路是否支持
- 明确此次升级需求
集群健康状况
-
确认集群拓扑结构是否满足高可用需求
-
集群拓扑是否健康
-
硬件配置是否达标
-
集群使用情况
- 集群数据量
- 大表情况
- 表宽度,字段数量
- SQL 语句 DDL\DML 执行情况 QPS
- 字符集等兼容情况
检查升级技术线路
-
原地升级
- 原地停机升级
- 原地滚动升级: 需要关注对业务的影响和组件副本
-
迁移升级
-
升级时间估算
-
后备计划时间估算
升级预案检查
- 制定应急预案
- 降级预案
- 回退方式
- 逃生通道
TiDB暂不支持版本降级或升级后回退,可以使用迁移升级的方案
版本配置变更检查
检查升级前后版本系统变量、配置项差异对比
- 参数对比专栏 - TiDB 升级利器(参数对比)——TiDBA | TiDB 社区
- 手动查询收集信息
查询变量
select @@tidb_config\G;
show variables\G;
show config where type='tidb';
查询系统表
select * from cluster_config;
select * from VARIABLES_INFO;
检查维度
- 关注默认值对版本变化
- 关注使用了非默认值的变量或配置项
- 关注配置项发生移除或新增
- 关注新特性
- 是否有和使用相关 Issue
参考
实践案例
以下是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;