更新时间:2024-10-24 GMT+08:00

ALM-45440 ClickHouse副本间不一致

告警解释

当ClickHouse副本数大于1时,系统周期性对复制表进行检查,若数据不同步,则发送告警。副本间所有复制表数据同步后,告警清除。

告警属性

告警ID

告警级别

是否可自动清除

45440

次要

告警参数

参数名称

参数含义

来源

产生告警的集群或系统名称。

服务名

产生告警的服务名称。

角色名

产生告警的角色名称。

主机名

产生告警的主机名。

表名

产生告警的表名。

对系统的影响

当本地复制表在副本之间业务数据不一致时,会影响ClickHouse复制表数据的可靠性,造成数据差异,影响分布式表的查询结果。

可能原因

  • ClickHouse业务压力过大。
  • ClickHouse与ZooKeeper连接发生异常。

处理步骤

检查ClickHouse业务压力是否过大

  1. 登录FusionInsight Manager页面,选择“运维 > 告警 > 告警”,查看当前告警“定位信息”中的库名、表名、角色名以及确认主机名所在的IP地址。
  2. 以客户端安装用户,登录客户端的节点,执行如下命令:

    cd {客户端安装路径}

    source bigdata_env

    • 集群已启用Kerberos认证(安全模式):

      kinit 组件业务用户

      clickhouse client --host 上报告警的ClickHouseServer实例IP --port 9440 --secure

    • 集群未启用Kerberos认证(普通模式):

      clickhouse client --host 上报告警的ClickHouseServer实例IP --user 用户名 --password --port 9000

  3. 执行以下语句,查询系统表判断是否有业务频繁写入,若有相关业务,等待业务执行完成,查看告警是否清除。

    SELECT query_id, user, FQDN(), elapsed, query FROM system.processes ORDER BY query_id;

    • 是,操作结束。
    • 否,执行4

  4. 和用户确认是否有大批量数据写入,若是,请等待任务结束之后,查看告警是否消除。

    • 是,操作结束。
    • 否,执行5

  5. 执行如下语句检查副本是否同步。

    select table,absolute_delay, queue_size, inserts_in_queue, merges_in_queue from system.replicas where absolute_delay > 0 order by absolute_delay desc limit 10;

    • 是,执行6
    • 否,执行9

  6. 若有inserts_in_queue中有大量待插入内容,则执行如下SQL查询副本同步队列,查看错误原因。

    SELECT database,table,type,any(last_exception),any(postpone_reason),min(create_time),max(last_attempt_time),max(last_postpone_time),max(num_postponed) AS max_postponed,max(num_tries) AS max_tries,min(num_tries) AS min_tries,countIf(last_exception != '') AS count_err,countIf(num_postponed > 0) AS count_postponed,countIf(is_currently_executing) AS count_executing,count() AS count_all FROM system.replication_queue GROUP BY database,table,type ORDER BY count_all DESC

    查看结果是否出现错误类似:

    Not executing fetch of part xxx because n fetches already executing, max n
    • 是,执行7
    • 否,执行9

  7. 在FusionInsight Manager首页,选择“集群 > 服务 > ClickHouse > 配置 > 全部配置”,查看参数“background_pool_size”值是否为节点核数的2倍。

    • 是,执行9
    • 否,执行8

  8. 设置该参数值为节点核数的2倍,并同步配置,等待一段时间,查看告警是否消失。

    • 是,操作结束。
    • 否,执行9

检查ClickHouse与ZooKeeper连接是否异常

  1. 登录ClickHouseServer实例所在节点,进入“${BIGDATA_HOME}/FusionInsight_ClickHouse_*/*_*_ClickHouseServer/etc”查看“config.xml”中ClickHouseServer与ZooKeeper之的端口配置是否一致,如下加粗部分所示:

    查看ZooKeeper端口号:在FusionInsight Manager首页,选择“集群 > 服务 > ZooKeeper > 配置 > 全部配置”,参数“clientPort”的值即ZooKeeper端口号。

      <zookeeper>
        <session_timeout_ms>10000</session_timeout_ms>
        <node index="1">
          <host>server-2110082001-0019</host>
          <port>24002</port>
        </node>
        <node index="2">
          <host>server-2110082001-0018</host>
          <port>24002</port>
        </node>
        <node index="3">
          <host>server-2110082001-0017</host>
          <port>24002</port>
        </node>
     </zookeeper>
    • 是,执行11
    • 否,执行10

  2. 修改该端口号为ZooKeeper端口号,重启ClickHouseServer实例,查看告警是否消失。

    • 是,操作结束。
    • 否,执行11

      重启实例期间实例不可用,当前实例节点的ClickHouse业务会执行失败。

收集故障信息

  1. 在FusionInsight Manager界面,选择“运维 > 日志 > 下载”。
  2. 在“服务”中勾选待操作集群的“ClickHouse”。
  3. 在“主机”中选择异常的主机,单击“确定”。
  4. 单击右上角的时间编辑按钮,设置日志收集的“开始时间”和“结束时间”分别为告警产生时间的前后1小时,单击“下载”。
  5. 请联系运维人员,并发送已收集的故障日志信息。

告警清除

此告警修复后,系统会自动清除此告警,无需手工清除。

参考信息

不涉及。