当其中一个分片服务器出现故障时,是否有办法使分布式 table 仍然可以用于查询?

Is there someway to make distributed table still work for query when one of the shard servers down?

常见的情况是我们更新clickhouse的配置,必须重启clickhouse才能生效。并且在重启过程中,查询服务依赖clickhouse的分布式table会return与重启服务器断开连接异常

所以,正如标题所说,我想要的是使分布式 table 在其中一个分片服务器出现故障时仍可用于查询的方法。谢谢

我看到两种方式:

  1. 由于此服务器故障是暂时的,您可以通过向请求添加重试策略来重构服务器端代码(对于 c#,我建议使用 Polly

  2. 使用代理(负载均衡器)到 CH(例如 chproxy)。

更新

当集群中的一个节点重新启动时,在复制的 table 上创建的分布式 table 应该可以访问(当然不应将请求发送到重新启动的节点)。

数据的可用性是通过复制实现的,因此,您需要在物化视图上创建 Replicated*-tables,然后在 Replicated*-[=38 上创建 Distributed-tables =]s.

请看文章CH Data Distribution, Distributed vs Shard vs Replicated.. 并作为一个工作示例(这不是你的情况CH Circular cluster topology