如何在无数据丢失的情况下移除SingleStore数据库的一个Leaf节点
移除SingleStore单个Leaf节点(无数据丢失)
前提条件
- 保留的Leaf节点需有足够磁盘空间容纳所有数据(需至少1TB可用空间,覆盖原两个节点的总数据量)
- 操作建议在业务低峰期进行,避免影响在线业务
步骤1:确认集群与节点状态
- 执行
SHOW LEAVES;查看两个Leaf节点的状态,确保均为Online,记录待移除节点的host和port信息。 - 执行
SHOW PARTITIONS;确认数据分布,此时所有分区应在两个Leaf节点各有1个副本(双副本配置)。
步骤2:迁移待移除节点的所有数据副本
由于要从双节点集群转为单节点,需将待移除节点上的所有分区副本迁移至保留节点,并将副本数调整为1:
- 执行命令:
ALTER DATABASE <你的数据库名> REDUCE REPLICATION TO 1; - 等待迁移完成,可通过
SHOW PARTITIONS EXTENDED;查看进度,直到所有分区的Replicas列显示为1,且所有副本均位于保留的Leaf节点。
步骤3:标记待移除节点为脱机状态
- 执行
ALTER LEAF '<待移除节点host>:<port>' SET OFFLINE;,阻止新的读写请求指向该节点。 - 再次执行
SHOW LEAVES;确认该节点状态变为Offline。
步骤4:从集群中移除Leaf节点
- 执行
DROP LEAF '<待移除节点host>:<port>';,彻底将节点从集群中移除。 - 执行
SHOW LEAVES;验证集群仅剩目标保留的Leaf节点。
步骤5:验证数据完整性
- 对所有业务表执行
CHECK TABLE <表名>;,检查数据完整性。 - 通过查询(如
SELECT COUNT(*) FROM <表名>;)对比操作前后的数据量,确认无数据丢失。
内容的提问来源于stack exchange,提问作者Phonix
相关产品推荐
相关产品推荐

