ALM-45440 ClickHouse副本间不一致
本章节仅适用于MRS 3.2.1及之后版本。
告警解释
当ClickHouse副本数大于1时,系统周期性对复制表进行检查,若数据不同步,则发送告警。副本间所有复制表数据同步后,告警清除。
告警属性
告警ID |
告警级别 |
告警类型 |
业务类型 |
是否可自动清除 |
---|---|---|---|---|
45440 |
次要 |
业务质量告警 |
ClickHouse |
是 |
告警参数
类别 |
参数名称 |
参数含义 |
---|---|---|
定位信息 |
来源 |
产生告警的集群或系统名称。 |
服务名 |
产生告警的服务名称。 |
|
角色名 |
产生告警的角色名称。 |
|
主机名 |
产生告警的主机名。 |
|
表名 |
产生告警的表名。 |
对系统的影响
当本地复制表在副本之间业务数据不一致时,会影响ClickHouse复制表数据的可靠性,造成数据差异,影响分布式表的查询结果。
可能原因
- ClickHouse业务压力过大。
- ClickHouse与ZooKeeper连接发生异常。
处理步骤
检查ClickHouse业务压力是否过大
- 登录FusionInsight Manager页面,选择“运维 > 告警 > 告警”,查看当前告警“定位信息”中的库名、表名、角色名以及确认主机名所在的IP地址。
- 以客户端安装用户,登录客户端的节点,执行如下命令:
cd {客户端安装路径}
source bigdata_env
- 执行以下语句,查询系统表判断是否有业务频繁写入,若有相关业务,等待业务执行完成,查看告警是否清除。
SELECT query_id, user, FQDN(), elapsed, query FROM system.processes ORDER BY query_id;
- 是,操作结束。
- 否,执行4。
- 和用户确认是否有大批量数据写入,若是,请等待任务结束之后,查看告警是否消除。
- 是,操作结束。
- 否,执行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;
- 若有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
- 在FusionInsight Manager首页,选择“集群 > 服务 > ClickHouse > 配置 > 全部配置”,查看参数“background_pool_size”值是否为节点核数的2倍。
- 设置该参数值为节点核数的2倍,并同步配置,等待一段时间,查看告警是否消失。
- 是,操作结束。
- 否,执行9。
检查ClickHouse与ZooKeeper连接是否异常
- 登录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>
- 修改该端口号为ZooKeeper端口号,重启ClickHouseServer实例,查看告警是否消失。
- 是,操作结束。
- 否,执行11。
收集故障信息
告警清除
此告警修复后,系统会自动清除此告警,无需手工清除。
参考信息
不涉及。