修复数据分区表
大约 2 分钟
修复数据分区表
在极端情况下,例如 ConfigNode 元数据丢失或部分数据分区信息损坏,IoTDB 自 V2.0.11.1 起提供手动修复数据分区表的能力。该功能用于恢复 ConfigNode 中缺失的数据分区信息,建议在确认存在数据分区表异常后使用。
1. 执行修复操作
当所有 ConfigNode 和 DataNode 均正常运行后,执行以下 SQL 触发修复流程:
REPAIR DATA PARTITION TABLE;系统将自动扫描各 DataNode 节点中的数据分区信息,并检查 ConfigNode 的数据分区表中是否存在缺失记录。若发现缺失,系统会自动进行修复。
注意:执行修复操作前,请确保 ConfigNode 与 DataNode 均处于正常运行状态。
2. 查看修复进度
在执行 REPAIR DATA PARTITION TABLE 后,可以通过以下 SQL 查看修复任务的实时进度:
SHOW REPAIR DATA PARTITION TABLE PROGRESS;执行上述 SQL 后,系统将返回包含以下字段的结果集:
| 字段名 | 说明 |
|---|---|
Status | 当前修复任务的状态 |
Progress(%) | 当前修复任务的整体进度百分比 |
Message | 当前状态或进度的详细信息 |
任务执行过程中可能看到类似结果:
+----------------------------+-----------+----------------------------------------------------+
| Status|Progress(%)| Message|
+----------------------------+-----------+----------------------------------------------------+
| COLLECT_EARLIEST_TIMESLOTS| 0.0| DataPartitionTable integrity check progress: 0.0%|
+----------------------------+-----------+----------------------------------------------------+如果系统当前没有正在执行的修复任务,则返回 IDLE 状态,如:
+------+-----------+-------------------------------------------------------+
|Status|Progress(%)| Message|
+------+-----------+-------------------------------------------------------+
| IDLE| 0.0|No running DataPartitionTable integrity check procedure|
+------+-----------+-------------------------------------------------------+3. 配置参数(可选)
为避免扫描文件过程对线上正常业务造成影响,IoTDB 提供了以下两个可配置参数,用于控制并发处理能力与读取限流。您可以根据实际环境在 iotdb-system.properties 中按需配置。
| 参数名 | 说明 | 默认值 |
|---|---|---|
partition_table_recover_worker_num | 并行检索的线程数量 | 10 |
partition_table_recover_max_read_mb_per_sec | 每秒最大读取速率,单位为 MB/s | 10 |
数据分区表修复过程中,会使用
partition_table_recover_worker_num控制并发检查的线程数。在生产环境中,建议为 IoTDB 主要功能预留部分线程资源,该参数值不宜超过 CPU 核数。在生产环境中,建议通过
partition_table_recover_max_read_mb_per_sec设置读取速率上限,避免修复操作对业务读写造成过大压力。
注意:以上参数均为可选项,默认值为
10;取值须大于0,修改后重启生效。