CockroachDB单集群指定3节点存储表失败,求经验解决方案
CockroachDB表指定节点存储失败的解决办法
- 你写的SQL约束逻辑存在问题:
constraints = '[+ 1, + 2, + 3, - 4, - 5]'这种写法要求每个副本必须同时落在节点1、2、3上,但CockroachDB的每个副本只能存储在单个节点,这种矛盾的要求导致配置无法生效。 - 正确的约束写法是指定副本只能从节点1、2、3中选择,使用
IN约束实现:
若想明确排除节点4、5,也可以这样写(其实上述ALTER TABLE belegdaten CONFIGURE ZONE USING num_replicas = 3, constraints = '[+IN(1,2,3)]';IN约束已隐含排除效果,补充后逻辑更清晰):ALTER TABLE belegdaten CONFIGURE ZONE USING num_replicas = 3, constraints = '[+IN(1,2,3), -4, -5]'; - 注意:语句中的节点编号必须与集群内实际节点ID完全匹配,避免因编号错误导致配置失效。
- 配置完成后,可通过以下语句验证效果:
-- 查看表的分区配置详情 SHOW ZONE CONFIGURATION FOR TABLE belegdaten; -- 查看表的副本分布情况 SELECT * FROM [SHOW TABLE belegdaten WITH DISTRIBUTION];
内容的提问来源于stack exchange,提问作者Eugen Itskovich
相关产品推荐
相关产品推荐

