tiflash调整副本(由3副本调整为2副本)时候表能不能访问?

【 TiDB 使用环境】生产环境、测试

【 TiDB 版本】v5.1.0

【遇到的问题:问题现象及影响】目前生产tiflash为四节点,每个节点内存158g,48核,3~3.5T,目前为三副本设置,但是随着表数据量增加,磁盘可用空间越来越小,现在准备将tiflash由3副本调整为2副本,调整时候表能否正常访问?

可以参考下小助手的回复,很详细了


当需要调整 TiFlash 副本的数量时,可以在 TiDB 中执行 alter tableset tiflash replica 语句,这条语句作为 DDL 语句执行。执行该语句后,TiDB 会将该语句转化为一系列的 DDL 操作,然后将这些 DDL 操作发送给 TiFlash 实例。TiFlash 实例会定期启动一个子进程来处理与 TiFlash 副本添加、删除相关的操作。在这个过程中,如果在进程列表中偶尔看到一个名为 tiflash_cluster_manager 的不常驻进程(在官网中称为 “pd buddy”),属于正常情况。其日志会输出到 tiflash_cluster_manager.log。具体的添加 TiFlash 副本各阶段集群中组件的工作可以参考 [1]

需要注意的是,按库构建 TiFlash 副本命令实际是为用户执行一系列 DDL 操作,对资源要求比较高。如果在执行过程中出现中断,已经执行成功的操作不会回退,未执行的操作不会继续执行。因此,在执行该操作时需要注意集群的资源情况,以免出现问题。具体可以参考 [2][3]


在 TiFlash 调整副本的过程中,如果是增加副本,TiFlash 会自动将原有的数据同步到新的副本上,不会清理原来的数据。如果是减少副本,TiFlash 会将原有的数据同步到其他副本上,然后再删除该副本,也不会清理原来的数据。因此,TiFlash 调整副本的过程中不会清理原来的数据,而是会自动同步到新的副本上或者其他副本上。具体可以参考 [1][2]

需要注意的是,TiFlash 副本的同步过程需要一定的时间,具体时间取决于数据量的大小和网络带宽的情况。在同步过程中,TiFlash 副本可能会处于不可用状态,因此在调整副本的过程中需要注意集群的可用性。


可以参考这块的内容:

3 个赞

还有就是我的5.1.0版本将由3副本调整为2副本时候,磁盘空间能不能释放?

建议用 6.1.x 的版本,bug修复的比较多…

磁盘空间会由 tiflash 的调度异步的执行释放…

tiflash 二副本就足够了… 多了也没啥用…

1 个赞

需要实测,环境不同,差别很大的。在生产环境之外的测试环境中进行性能测试和压力测试,以评估调整副本数对集群性能的影响。

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。