额,好像并不是BUG,找了一个规则跟了一下,这个是针对表设置的PLACEMENT POLICY
,就跟这个规则一样,是指partition_id为61818的分区,必须满足disk in ["sata-new"]
这个规则。
» config placement-rules rule-bundle get TiDB_DDL_61818
{
"group_id": "TiDB_DDL_61818",
"group_index": 80,
"group_override": true,
"rules": [
{
"group_id": "TiDB_DDL_61818",
"id": "partition_rule_61818_0",
"index": 40,
"start_key": "74800000000000f1ff7a00000000000000f8",
"end_key": "74800000000000f1ff7b00000000000000f8",
"role": "leader",
"is_witness": false,
"count": 1,
"label_constraints": [
{
"key": "disk",
"op": "in",
"values": [
"sata-new"
]
},
{
"key": "engine",
"op": "notIn",
"values": [
"tiflash"
]
}
]
},
{
"group_id": "TiDB_DDL_61818",
"id": "partition_rule_61818_1",
"index": 40,
"start_key": "74800000000000f1ff7a00000000000000f8",
"end_key": "74800000000000f1ff7b00000000000000f8",
"role": "voter",
"is_witness": false,
"count": 2,
"label_constraints": [
{
"key": "disk",
"op": "in",
"values": [
"sata-new"
]
},
{
"key": "engine",
"op": "notIn",
"values": [
"tiflash"
]
}
]
}
]
}
查询元数据后,确实是主动把这个分区放到HDD盘上的,是符合预期的。
mysql> select * from information_schema.partitions where TIDB_PARTITION_ID='61818' limit 1\G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: XXXXXX
TABLE_NAME: XXXXXX
PARTITION_NAME: p202307
SUBPARTITION_NAME: NULL
PARTITION_ORDINAL_POSITION: 1
SUBPARTITION_ORDINAL_POSITION: NULL
PARTITION_METHOD: RANGE COLUMNS
SUBPARTITION_METHOD: NULL
PARTITION_EXPRESSION: cal_date
SUBPARTITION_EXPRESSION: NULL
PARTITION_DESCRIPTION: '2023-08-01'
TABLE_ROWS: 0
AVG_ROW_LENGTH: 0
DATA_LENGTH: 0
MAX_DATA_LENGTH: 0
INDEX_LENGTH: 0
DATA_FREE: 0
CREATE_TIME: 2023-08-28 15:52:16
UPDATE_TIME: NULL
CHECK_TIME: NULL
CHECKSUM: NULL
PARTITION_COMMENT:
NODEGROUP: NULL
TABLESPACE_NAME: NULL
TIDB_PARTITION_ID: 61818
TIDB_PLACEMENT_POLICY_NAME: on_sata_new
1 row in set (0.31 sec)