kafka reassign partition后, ISR 落后于 Replicas

wlh 发表于: 2018-08-08   最后更新时间: 2018-08-08  
  •   0 订阅,218 游览

执行 reassign partition命令:

/opt/kafka/bin/kafka-reassign-partitions.sh --zookeeper 10.117.10.194:2181,10.252.223.221:2181,10.117.3.243:2181 --reassignment-json-file p4.json --execute

之后topic状态不正常

[root@prod-mq1 bin]# ./kafka-topics.sh --describe --zookeeper 10.117.10.194:2181,10.252.223.221:2181,10.117.3.243:2181 --topic ods_prod11_5_7
Topic:ods_prod11_5_7    PartitionCount:10       ReplicationFactor:3     Configs:
        Topic: ods_prod11_5_7   Partition: 0    Leader: 1       Replicas: 1,2,3 Isr: 1
        Topic: ods_prod11_5_7   Partition: 1    Leader: 1       Replicas: 1,2,3 Isr: 1
        Topic: ods_prod11_5_7   Partition: 2    Leader: 1       Replicas: 1,2,3 Isr: 1
        Topic: ods_prod11_5_7   Partition: 3    Leader: 1       Replicas: 1,2,3 Isr: 1
        Topic: ods_prod11_5_7   Partition: 4    Leader: 1       Replicas: 1,2,3 Isr: 1
        Topic: ods_prod11_5_7   Partition: 5    Leader: 1       Replicas: 1,2,3 Isr: 1
        Topic: ods_prod11_5_7   Partition: 6    Leader: 1       Replicas: 1,2,3 Isr: 1
        Topic: ods_prod11_5_7   Partition: 7    Leader: 1       Replicas: 1,2,3 Isr: 1
        Topic: ods_prod11_5_7   Partition: 8    Leader: 1       Replicas: 1,2,3 Isr: 1
        Topic: ods_prod11_5_7   Partition: 9    Leader: 1       Replicas: 1,2,3 Isr: 1

Topic 处于 under replicated 状态.

server.log 充满:

  [2018-08-08 16:21:12,773] WARN Received a PartitionLeaderEpoch assignment for an epoch < latestEpoch. This implies messages have arrived out of order. New: {epoch:13, offset:89409682}, Current: {epoch:38, offset84236994} for Partition: prod-rm-bp1p125xw0bvcey34-2 (kafka.server.epoch.LeaderEpochFileCache)

求教大家,如何让topic恢复正常?







发表于: 11天前   最后更新时间: 11天前   游览量:218
上一条: 到头了!
下一条: 已经是最后了!

评论…


  • {"version": 1, "partitions": [{"topic": "ods_prod11_5_7", "partition": 0, "replicas": [1,2,3]}, {"topic": "ods_prod11_5_7", "partition": 1, "replicas": [1,2,3]}, {"topic": "ods_prod11_5_7", "partition": 2, "replicas": [1,2,3]}, {"topic": "ods_prod11_5_7", "partition": 3, "replicas": [1,2,3]}, {"topic": "ods_prod11_5_7", "partition": 4, "replicas": [1,2,3]}, {"topic": "ods_prod11_5_7", "partition": 5, "replicas": [1,2,3]}, {"topic": "ods_prod11_5_7", "partition": 6, "replicas": [1,2,3]}, {"topic": "ods_prod11_5_7", "partition": 7, "replicas": [1,2,3]}, {"topic": "ods_prod11_5_7", "partition": 8, "replicas": [1,2,3]}, {"topic": "ods_prod11_5_7", "partition": 9, "replicas": [1,2,3]}]}
    • 如何忽视?Replicas: 1,2,3 Isr: 1, 意味着 只有一个broker有数据,如果该broker shutdown, 整个partition就不能访问.

      如何让ISR 同步为 [1,2,3]?
        • 通过检查replication-offset-checkpoint , 我发现 broker2,3的副本已经停止同步了: 
          cat replication-offset-checkpoint |grep  ods_prod11_5_7
          ods_prod11_5_7 6 5101186
          ods_prod11_5_7 9 2734089
          ods_prod11_5_7 7 6379237
          ods_prod11_5_7 0 6006019
          ods_prod11_5_7 3 6199149
          ods_prod11_5_7 5 3782093
          ods_prod11_5_7 8 7968393
          ods_prod11_5_7 4 6279389
          ods_prod11_5_7 2 5780622
          ods_prod11_5_7 1 4235235  <===不再增长

          而broker1 上面的文件再不停增长.
            • 只能看日志,没有相关命令确认的,导致没同步有以下3种原因
              1、由于io引发的同步慢,导致落后
              2、在一定周期时间内follower停止从leader拉取请求。follower replica卡住了是由于GC暂停或follower失效或死亡。
              3、当用户给topic增加新的副本时,新的follower不在同步副本列表中,直到他们完全赶上了leader日志。
                • follower replica卡住了是由于GC暂停或follower失效或死亡:

                  看了follower GC日志,GC正常

                  follower失效或死亡: 是否能够从日志判断?
                  如果是这样,如何恢复follower?

                    • [2018-08-08 16:21:12,773] WARN Received a PartitionLeaderEpoch assignment for an epoch < latestEpoch. This implies messages have arrived out of order. New: {epoch:13, offset:89409682}, Current: {epoch:38, offset84236994} for Partition: prod-rm-bp1p125xw0bvcey34-2 (kafka.server.epoch.LeaderEpochFileCache)
                        你分配分区的脚本贴一下。
                      • 评论…
                        • in this conversation
                          提问