
# ALM-45440 ClickHouse副本间不一致
#### 告警解释
当ClickHouse副本数大于1时，系统周期性对复制表进行检查，若数据不同步，则发送告警。副本间所有复制表数据同步后，告警清除。
#### 告警属性
| 告警ID  | 告警级别 | 是否可自动清除 |
|:---|:---|:---|
| 45440 | 次要   | 是       |
   
#### 告警参数
| 参数名称 | 参数含义          |
|:---|:---|
| 来源   | 产生告警的集群或系统名称。 |
| 服务名  | 产生告警的服务名称。    |
| 角色名  | 产生告警的角色名称。    |
| 主机名  | 产生告警的主机名。     |
| 表名   | 产生告警的表名。      |
   
#### 对系统的影响
当本地复制表在副本之间业务数据不一致时，会影响ClickHouse复制表数据的可靠性，造成数据差异，影响分布式表的查询结果。
#### 可能原因
- ClickHouse业务压力过大。
- ClickHouse与ZooKeeper连接发生异常。
 
#### 处理步骤
**检查ClickHouse业务压力是否过大**
1. 登录FusionInsight Manager页面，选择"运维 \> 告警 \> 告警"，查看当前告警"定位信息"中的库名、表名、角色名以及确认主机名所在的IP地址。 
   登录集群Manager具体操作，请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
   
   
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连接是否异常**
9. 登录ClickHouseServer实例所在节点，进入"${BIGDATA_HOME}/FusionInsight_ClickHouse_\*/\*_\*_ClickHouseServer/etc"查看"config.xml"中ClickHouseServer与ZooKeeper的端口配置是否一致，如下加粗部分所示。
   
   ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
   查看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]。
   
   
   
   
10. 修改该端口号为ZooKeeper端口号，重启ClickHouseServer实例，查看告警是否消失。
    
    - 是，操作结束。
    
    - 否，执行[步骤 11]。
      ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/notice_3.0-zh-cn.png)
      重启实例期间实例不可用，当前实例节点的ClickHouse业务会执行失败。
      
    
    
    
    
**收集故障信息**
11. 在FusionInsight Manager界面，选择"运维 \> 日志 \> 下载"。
12. 在"服务"中勾选待操作集群的"ClickHouse"。
13. 在"主机"中选择异常的主机，单击"确定"。
14. 单击右上角的时间编辑按钮，设置日志收集的"开始时间"和"结束时间"分别为告警产生时间的前后1小时，单击"下载"。
15. 请联系运维人员，并发送已收集的故障日志信息。
 
#### 告警清除
此告警修复后，系统会自动清除此告警，无需手工清除。
#### 参考信息
不涉及。
