请问 extra-peer-region-count 很高 并且不会 减少, 然后 start_key 为空 是什么原因

V4.0.5 版本

然后 TIFLASH 很频繁的报 这三个错 请问是什么问题, 跟 extra-peer-region-count 很高有关吗:

[<unknown>] ["pingcap.tikv: region {28685,5,195} find error: peer is not leader for region 28685, leader may None"] [thread_id=4]
[<unknown>] ["pingcap.tikv: region {28685,5,195} find error: stale command"] [thread_id=3]
[<unknown>] ["LogIterator: readLog error: level: "] [thread_id=8]

然后查看 这个 28685 start_key 为空

{
      "id": 28685,
      "start_key": "",
      "end_key": "7480000000000000FF0500000000000000F8",
      "epoch": {
        "conf_ver": 5,
        "version": 195
      },
      "peers": [
        {
          "id": 28686,
          "store_id": 1
        },
        {
          "id": 28687,
          "store_id": 4
        },
        {
          "id": 28688,
          "store_id": 5
        }
      ],
      "leader": {
        "id": 28688,
        "store_id": 5
      },
      "written_bytes": 0,
      "read_bytes": 0,
      "written_keys": 0,
      "read_keys": 0,
      "approximate_size": 22,
      "approximate_keys": 5530
    },

请解答, 谢谢~

1、在开启 TiFlash 后,在 Region health 监控面板中会存在相应数量的 extra-peer-region-count , 这个数量和 开启 TiFlash 的表的 region 数量一致,确认方式请参考:

1) 查看开启 TiFlash 的表的 region 情况
SHOW TABLE t1 REGIONS; 

2) 抽查某个 region,查看 region 分布情况
pd-ctl region <region_id>

3) 看下 region 的数量以及 extra 的 peer 是否是 TiFlash 的 peer

2、TiFlash 出现 peer is not leader 相关的报错信息,可能是相应的 region 当时发生了选举或者 pd 进行了 transfter leader 的操作,这部分信息可以通过 tikv 以及 pd 的日志中该 region 的信息来确认,理论上不会影响业务使用。

好的, 感谢解答, show REGIONS.sql (118.3 KB) 附件是

SELECT * FROM information_schema.tiflash_replica

SHOW TABLE t REGIONS

的内容,感觉 Regions 并不多, 还有就是 用
tiup ctl pd region check extra-peer
看到的 start_key 为什么会为空呢

然后 查看 28686 的结果 也是 null

tiup ctl pd  region 28686
Starting component ctl:  pd  region 28686
null

1、如果 TiFlash 对应的表和 extra peer 数量没有完全对应,那么可以使用 pd-ctl region check extra-peer 是否还有其他 region 存在额外的 peer~

2、上面提到的 check extra-peer 返回空,具体的返回结果是怎样的?这里是对某些 region 的 start key 为空感到疑惑,还是对 check extra-peer 的返回结果感到疑惑?

region 的 start key 为空,是因为在整个集群中的第一个 region 可能会出现 start key 是空的情况~

3、region 28686 这样的返回结果表示没有这个 region ,从上面的历史信息可见,28686 是 peer 而非 region,并且是 region 28685 的 peer ,无法使用 region 28686 获取到相关信息是预期内的结果~

好的 看了 pd-ctl region check extra-peer 的执行结果:extra-peer.log (1.2 MB)

算了下 regions 和 peer 的数据量
大概有 1K7 的 regions , 跟 region health 的 extra-peer-region-count 是一致的, 这个对的上

不过我的疑问是, 在哪里看 整个集群拥有的 regions 数,
目前 只有 20G 数据, 为什么会有这么多 regions,总觉得 regions 多了

一共 16张表, 之前有反复 dorp 过 database
然后 一共开启了 4个表 的 tiflash 副本,
4个 tiflash 的副本也不可能有 1K7 的 extra-peer-region-count 吧

比较疑惑,谢谢 答疑

1、当前集群中副本数设置是怎样的?

2、整个集群的 region 数量可以通过 PD 监控的 Number of Regions 监控项来获取

3、之前 drop 过表,所以在 PD 的 region health 中可以看到有 empty region,Number of Regions 监控项中,同样包括 empty region:

4、集群中的 region 除业务表之外,集群的某些数据字典的信息,以及 DDL 变更时 schema 中间状态信息等等,也是以 region 的形式存储在 TiKV 中~

嗯嗯,empty-region-count 之前也很多,后来慢慢变少了,现在几乎没有
那 extra-peer-region-count 和 learnel-peer-region-count 的具体关系是什么呢, 他俩有固定比率吗
现在前者很多 后者 很少

learnel-peer-region-count 具体指的什么, 什么时候产生的

1、extra-peer-region-count 和 learnel-peer-region-count 的没有固定比率,extra 表示存在多 peer 的 region,learner 表示 raft group 中存在 learner 角色的 peer

2、有两种情况会存在 learner :

1) Learner 是一种特殊的角色,它只参与同步 raft log 而不参与投票,在目前的实现中只短暂存在于添加副本的中间步骤。
2) 如果是开启了 TiFlash ,那么 TiFlash 中的 peer 也是 learner 角色。

另外,上面提到的 extra peer 目前有确认的原因了吗?当前集群中副本的数量是如何设置的?

这里对Learner的解释到位!