max-replicas 在什么情况下会失效?

【 TiDB 使用环境】测试
【 TiDB 版本】v5.4.2

测试环境有一个集群,监控显示的数据量大概有3.4T,磁盘快不够,需要清理一批数据,就去查了查information_schema.table-storage-stats ,看看有哪些大表。于是就发现一个很奇怪的现象,pd的 max-replicas 配置好像失效了。

pd-ctl 查到的max-replicas 是默认的3,但是通过 information_schema.table-storage-stats 系统表去查,发现该集群中有的库表的副本数量不是最大的3,PEER_COUNT 显示的是 6,而且奇怪的是,有的库中所有表的 PEERC_COUNT 都是6,有的是 3-6 不等,有的又全都是 3。
集群并无配置 placement rules。

是不是有tiflash?

没有,标准部署的集群,6个 tikv节点

看看相关region的详细信息

或许是这个表记录的本身就是错误 不准确的,还是show table regions 看到的结果准确

1 个赞

我为什么查这个表直接报错了?
image

加where TABLE_SCHEMA=‘xxxx’

SELECT * FROM INFORMATION_SCHEMA.TIKV_REGION_PEERS;
这个查region的副本,或者直接pdctl里面查才是对的吧

1 个赞

这样可以了,不过好像这个peercount确实显示不对

1 个赞

是的,这张表显示的信息有误,我通过 show table regions 看的是对的

没,这个表查不到 region 的副本数量

select trp.REGION_ID,count(1) from INFORMATION_SCHEMA.TIKV_REGION_PEERS trp group by trp.REGION_ID having count(1)<>3;

这个语句只要没有什么结果,应该就是正常的。

table-storage-stats这个表里面,应该是这个表peer的总数。比如你这个表有2个leader region,那peer就是6。
我有一个分区表,使用了预分裂region的参数,结果甚至是下面这样的:

每个分区是单独一行,有数据的两个分区peer_count就很大。没有但预分裂的也不小。 :joy:

1 个赞

对的,那个SQL跑出来是empty,是正常的。
我的又跟你不一样,我的全是6。。。
不过谢大佬解惑

看了下我的5.2.3 , 统计的表大小等信息极不准确,同样的表单独查和 schema整个查的结果都不一样
单独查:

查schema下所有:
select * from INFORMATION_SCHEMA.table_storage_stats where table_schema=‘skyalarm’ order by 2;

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。