我是咖啡哥
2022 年10 月 29 日 07:56
1
【TiDB 版本】 V5.4
【概述】 新表做了热点打散,但是leader region还是集中在一个节点。无法避免热点问题。
该表数据是消费MQ信息写入的,insert、update、select都比较频繁。为了避免热点问题,手动设置SHARD_ROW_ID_BITS、PRE_SPLIT_REGIONS参数,做了打散,但是建好表后,查看leader region分布不均匀。全部在一个节点上。
【背景】 做过哪些操作
重新建表,加了SHARD_ROW_ID_BITS = 4,PRE_SPLIT_REGIONS = 4。
【现象】 业务和数据库现象
leader region全部分配到store id为5的节点。导致该节点CPU飙高
SELECT
p.STORE_ID,
COUNT(s.REGION_ID) PEER_COUNT
FROM
INFORMATION_SCHEMA.TIKV_REGION_STATUS s
JOIN INFORMATION_SCHEMA.TIKV_REGION_PEERS p ON s.REGION_ID = p.REGION_ID
WHERE
TABLE_NAME = 'XXX'
AND p.is_leader = 1
GROUP BY
p.STORE_ID
ORDER BY
PEER_COUNT DESC;
有什么方法可以避免leader都在一个节点吗?
1.每一个tikv的节点资源是一样的吗,比如存储空间
2.看下每个tikv的打分情况
caiyfc
2022 年10 月 29 日 08:22
3
最快的解决办法就是查看相关表的慢sql,看看过滤条件的过滤性高不高,高的话加上索引,减少全表扫描,可以马上看到效果。
如果加索引不能解决,可以看看 Follower Read
数据小黑
(数据小黑)
2022 年10 月 29 日 08:32
4
h5n1
(H5n1)
2022 年10 月 29 日 09:03
5
1、建表前设置 tidb_scatter_region =on 就会把预切分的region 均分到所有节点。也可以pd-ctl scheduler add scatter xxx方式添加均衡调度 ,调度后最好删了 。
2、 pd-ctl operator add transfer-leader手动调度leader到其他节点
近墨者zyl
2022 年10 月 31 日 06:27
6
show create table XXXX,发出来看看,该表的相关sql也看看
我是咖啡哥
2022 年10 月 31 日 19:18
9
CREATE TABLE `XXX` (
`ID` VARCHAR(200) NOT NULL COMMENT 'ID',
`VEHICLE_NO` VARCHAR(50) DEFAULT NULL COMMENT '',
`WAYBILL_NO` VARCHAR(50) NOT NULL COMMENT '运单号',
....
`DEP_NODE_THREE` INT(10) DEFAULT NULL COMMENT '出发节点3',
`DEP_NODE_FOUR` INT(10) DEFAULT NULL COMMENT '出发节点4',
`DEP_NODE_FIVE` INT(10) DEFAULT NULL COMMENT '出发节点5',
`TKHK_TICKS` INT(10) DEFAULT NULL COMMENT '特快xx票数',
`EXP_TICKS` INT(10) DEFAULT NULL COMMENT 'x',
`ACTIVE` CHAR(1) DEFAULT NULL COMMENT '是否有效',
`CREATE_TIME` DATETIME(6) DEFAULT NULL COMMENT '创建时间',
`PARTITION_DATE` DATE NOT NULL COMMENT '分区日期',
`SHARDING_ITEM` INT(10) DEFAULT NULL COMMENT '分片项',
PRIMARY KEY (`ID`) /*T![clustered_index] NONCLUSTERED */,
KEY `IDX_UPII_WAYBILL_NO` (`WAYBILL_NO`),
KEY `IDX_UPII_CREATE_TIME` (`CREATE_TIME`),
KEY `IDX_ITEM_TIME` (`SHARDING_ITEM`,`CREATE_TIME`),
KEY `IDX_UPII_GROUP_BY_COMPOSITE` (`VEHICLE_NO`,`ARRIVE_ORG_CODE`,`CONSUMER_TAG`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='xxx' SHARD_ROW_ID_BITS = 4,PRE_SPLIT_REGIONS = 4;
我是咖啡哥
2022 年10 月 31 日 19:19
10
ID
VARCHAR(200) NOT NULL COMMENT ‘ID’
近墨者zyl
2022 年11 月 1 日 15:02
12
写的leader分布不均,读的leader分布很均匀,说明store 5写入量很大,region一直store 5分裂,然后再被调度到其他store
近墨者zyl
2022 年11 月 1 日 15:07
13
你怎么确定的就是这个表相关的leader呢?我猜测可能是其他的表或者索引
近墨者zyl
2022 年11 月 1 日 15:09
14
dashboard的热力图拿出来,就知道是哪个表了
system
(system)
关闭
2022 年12 月 31 日 15:09
15
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。