housepower / clickhouse_sinker

Easily load data from kafka to ClickHouse
https://housepower.github.io/clickhouse_sinker
Apache License 2.0
519 stars 117 forks source link

请问,clickhouse down掉,最后一个批次的数据可会丢失 #25

Closed jsding closed 4 years ago

jsding commented 4 years ago

请问, 如果clickhouse down掉, 最后一次批次的数据LoopWrite失败,这个批次的数据可会丢失?

sundy-li commented 4 years ago
  1. 如果做了副本, 写入到另外一个节点不会丢失
  2. 如果没有做副本,会丢失

其实是一个 取舍问题, loop 次数可以调大,也可以在写失败发送告警,用户可以自己去修改对应的策略

jsding commented 4 years ago

如果kafka设置手动commit offset就可以保证了。不然现在如果clickhouse集群停机维护,必然会出现后面的一个批次数据丢失的问题。

sundy-li commented 4 years ago

@jsding 现在sinker已经是优雅关闭了,所以每次关闭的时候 会commit最后一次offset。

你说的是 clickhouse停机维护,在不关闭sinker的情况下,如何保证一致性。 手动commit 是一个可行的方法,但是sarama库没有暴露 flushtoBroker 方法(你可以加一下就2行代码),然后在 LoopWrite 成功后,手动提交一下最后的offset。