TiFlash 升级帮助
本文介绍 TiFlash 升级时功能模块的变化,以及推荐的应对方法。
如需了解标准升级流程,请参考如下文档:
注意
v6.2.0 新增了一项名为 FastScan 的实验功能,该功能在 v7.0.0 GA。FastScan 在牺牲强一致性保证的前提下可以大幅提升扫表性能。
不推荐跨主干版本升级包含 TiFlash 的平凯数据库集群,如从 v4.x 升级至 v6.x,请先升级至 v5.x,然后再升级至 v6.x。
v4.x. 已接近产品周期尾声,请尽早升级到 v5.x 及以上版本。具体的版本周期请参考 TiDB 版本周期支持策略。
v6.0 作为非 LTS 版本,不会推出后续的 bug 修复版,请尽量使用 v6.1 及之后的 LTS 版本。
使用 TiUP 升级
如需将 TiFlash 从 v5.3.0 之前的版本升级到 v5.3.0 及之后的版本,必须进行 TiFlash 的停机升级。使用 TiUP 进行升级时:
- 如果 TiUP Cluster 版本大于或等于 v1.12.0,则无法进行 TiFlash 的停机升级。如果目标版本要求的 TiUP Cluster 版本大于或等于 v1.12.0,则建议先使用
tiup cluster:v1.11.3 <subcommand>将 TiFlash 升级到某个中间版本,然后进行 TiDB 集群的在线升级,之后升级 TiUP 版本,最后对 TiDB 集群进行不停机升级至目标版本。 - 如果 TiUP Cluster 版本小于 v1.12.0,则执行以下步骤进行升级 TiFlash。
参考如下步骤,可以在确保其他组件正常运行的情况下,使用 TiUP 升级 TiFlash:
-
关闭 TiFlash 实例:
tiup cluster stop <cluster-name> -R tiflash -
使用
--offline参数在不重启(只更新文件)的情况下升级集群:tiup cluster upgrade <cluster-name> <version> --offline例如:
tiup cluster upgrade <cluster-name> v7.1.8 --offline -
重新加载整个集群。此时,TiFlash 也会正常启动,无需额外操作。
tiup cluster reload <cluster-name>
从 v7.1.x 升级至 v7.1.8,并且设置了 storage.format_version = 5
从 v7.1.8 开始,TiFlash 支持新的 DTFile 版本 V3(实验特性),可以将多个小文件合并成一个大文件,减少文件数量。DTFile 在 v7.1.8 的默认版本是 V2,如需使用 V3,可通过 TiFlash 配置参数 storage.format_version = 5 来设置。设置后,TiFlash 仍可以读 V2 版本的 DTFile,并且在后续的数据整理 (Compaction) 中会将这些 V2 版本的 DMFile 逐步重新写为 V3 版本的 DTFile。
在 TiFlash 升级到 v7.1.8 并且使用了 V3 版本的 DTFile 后,如需回退到之前的 TiFlash 版本,可以通过 DTTool 离线将 DTFile 重新写回 V2 版本,详见 DTTool 迁移工具。
从 v7.1.x 升级至 v7.1.8 或以上版本
从 v7.1.8 开始,为了减少数据整理时产生的读、写放大,PageStorage V3 数据整理时逻辑进行了优化,导致底层部分存储文件名发生改动。因此,升级 TiFlash 到 v7.1.8 或以上版本后,不支持原地降级到之前的版本。
从 v7.1.8 开始,为了支持向量搜索功能,TiFlash 底层存储格式发生改动。因此,升级 TiFlash 到 v7.1.8 或以上版本后,不支持原地降级到之前的版本。
测试环境及特殊回退需求下的对策
如果在测试环境下或者其他有特殊回退需求的场景下,可以强制缩容 TiFlash 节点,并重新同步数据。操作步骤详见缩容 TiFlash 节点。