分享知识,分享快乐

0%

SR日常运维

1. 发生 “close index channel failed” 和 “too many tablet versions” 错误应该如何处理?

上述报错是因为导入频率太快,数据没能及时合并 (Compaction) ,从而导致版本数超过支持的最大未合并版本数。默认支持的最大未合并版本数为 1000。可以通过如下方法解决上述报错:

  • 增大单次导入的数据量,降低导入频率。

  • 修改 BE 配置文件 be.conf 中相关参数的配置,以加快 Compaction:

    • 对于明细表、聚合表和更新表,可以适当调大 cumulative_compaction_num_threads_per_diskbase_compaction_num_threads_per_diskcumulative_compaction_check_interval_seconds 的值。例如:

      1
      2
      3
      cumulative_compaction_num_threads_per_disk = 4
      base_compaction_num_threads_per_disk = 2
      cumulative_compaction_check_interval_seconds = 2
    • 对于主键表,可以适当调大 update_compaction_num_threads_per_disk 的值。适当调小 update_compaction_per_tablet_min_interval_seconds 的值。

    修改完成后,需要观察内存和 I/O,确保内存和 I/O 正常。

curl -XPOST http://172.20.85.188:8040/api/update_config?tablet_max_versions=10000

动态修改分桶是生效的

1
ALTER TABLE BAOFOO_CM_V2.cm_entry_asy_ma SET ("dynamic_partition.buckets" = "9")

动态修改分区周期是生效的,

1
2
3
4
5
ALTER TABLE test_db.`yq_protocol_payment_order2` SET ("dynamic_partition.time_unit" = "month");

ALTER TABLE test_db.`yq_protocol_payment_order2` SET ("dynamic_partition.enable" = "false");
ALTER TABLE test_db.`yq_protocol_payment_order2` ADD PARTITIONS START ("2022-01-10") END ("2025-01-01") EVERY (interval 1 month);
ALTER TABLE test_db.`yq_protocol_payment_order2` SET ("dynamic_partition.enable" = "true");

START (“2022-01-10”) END (“2025-01-01”) EVERY (interval 1 month) 这种方式添加分区要注意周期的结束时间

但是要注意结束的周期, 必须手动补全缺失的分区

例如 按小时分区改成按天分区,就会丢失15:00 到24点的分区

1
2
PARTITION p2024081914 VALUES [("2024-08-19 14:00:00"), ("2024-08-19 15:00:00")),
PARTITION p20240820 VALUES [("2024-08-20 00:00:00"), ("2024-08-21 00:00:00")))

#小时到天是有问题的
#天到周没有问题,

1
2
3
PARTITION p20240817 VALUES [('2024-08-17 00:00:00'), ('2024-08-18 00:00:00')),
PARTITION p2024_34 VALUES [('2024-08-19 00:00:00'), ('2024-08-26 00:00:00')),
PARTITION p2024_35 VALUES [('2024-08-26 00:00:00'), ('2024-09-02 00:00:00')))

2.3版本不支持小时和年分区