apache-kafka - Kafka - 如果分区丢失如何恢复?
问题描述
我在一个集群中有 4 个 Kafka 节点,一个主题分为 40 个分区和副本数 2。Kafka 版本是 2.3.1。
如何从两个 Kafka 节点同时死亡、无法重新启动并且 Kafka 日志丢失的情况中恢复?
我确定我会丢失一些数据,因为某些分区丢失(某些分区仅在死节点上具有副本)。
我尝试添加两个新的 Kafka 节点并将分区重新分配给所有 4 个可用的 Kafka 节点。最后,丢失的分区不会重新分配给两个新的 Kafka 节点。客户端无法发布到丢失分区的数据。
解决方案
只有当这些分区仍然至少有一个以前同步的活动副本时,Kafka 才会自行恢复丢失的分区。否则unclean.leader.election
必须在代理上启用以将领导者移动到不同步的副本
由于分区只有 2 个副本并且您丢失了 2 个节点,因此您可能会丢失一些分区。
您可以将 2 个副本替换为 4 个副本以提高可靠性
添加的两个节点应该与之前的节点具有相同的 id 才能提取副本。
推荐阅读
- oauth-2.0 - 我可以像查看 Bearer 令牌中的内容一样解码授权代码吗?
- c# - 通过 Youtube Data API 上传视频时,Videos.Insert 中参数 baseUri 的 Exeption System.ArgumentNullException
- django - 如何跟踪循环导入错误 Django 从未解决
- php - PHP中5个条件的if-else语句
- c - 我在哪里可以找到真正的 memcpy() 实现?
- python - 按要合并的模式选择特定的 csv 文件
- python - 将值附加到python中嵌套字典内的列表
- python - 修复 LineCollections 的 Matplotlib 3D 绘图中的 Zorder 参数序列
- jquery - 打开没有弹出窗口阻止程序显示 jquery 的新选项卡
- javascript - 如何在点击时加载不同的组件