
# ALM-45435 ClickHouse表元数据不一致
#### 告警解释
检测到分布式表本身，或分布式表对应的本地表的元数据不一致持续180min后，系统产生此告警。
当分布式表本身，或分布式表对应的本地表的元数据一致时，告警自动清除。
元数据一致包括：
- 表中各列的数量、名称、顺序、类型一致
- 分区键一致
- 排序键一致
- 主键一致
- 采样键一致
![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
该告警存在，则说明当前节点所属的ClickHouse集群中，表元数据存在不一致，不一致可能是由多种原因导致，不仅限于附加信息。
#### 告警属性
| 告警ID  | 告警级别 | 是否可自动清除 |
|:---|:---|:---|
| 45435 | 次要   | 是       |
   
#### 告警参数
| 参数名称 | 参数含义         |
|:---|:---|
| 来源   | 产生告警的集群或系统名称 |
| 服务名  | 产生告警的服务名称    |
| 角色名  | 产生告警的角色名称    |
| 表名   | 产生告警的库名.表名   |
   
#### 对系统的影响
ClickHouse业务中若存在元数据不一致的表，则后续针对该表的insert、alter等操作可能执行失败。
#### 可能原因
修改表元数据时在其中一个或多个ClickHouseServer节点执行失败或未执行。
#### 处理步骤
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. 查询是否有与告警表相关的正在执行的任务： 
   查询是否有执行中的sql任务：
   **select \* from system.processes where current_database='** *库名* **' and query like '%** *表名* **%'**
   查询是否有正在执行的mutation任务：
   **select \* from system.mutations where database=** *'库名'* **and table=** *'表名'* **;**
   - 如果查询出来的结果均为空，执行[步骤 4]。
   
   - 如果查询出来的结果中有报错信息，请根据报错内容处理，若无法自行处理，执行[步骤 6]；
   
   - 如果查询出来的结果中有执行中且不存在报错的信息，说明sql/mutation任务正在执行。 执行完成之后等待5min，如果告警消除，操作结束。如果告警没有消除，执行[步骤 4]。
     
   
   
   
   
4. 根据业务情况修改表的结构、删除或新增表，直到集群内该表在所有节点上元数据一致。等待5min，查看告警是否消除。
   
   - 是，操作结束。
   
   - 否，执行[步骤 5]。
   
   
   
   

5. 若确认该表需要且已经被删除，手动清除告警，观察告警是否还会上报。
   
   - 是，执行[步骤 6]。
   
   - 否，操作结束。
   
   
   
   
**收集故障信息**
6. 在FusionInsight Manager界面，选择"运维 \> 日志 \> 下载"。
7. 在"服务"中勾选待操作集群的"ClickHouse"。
8. 在"主机"中选择异常的主机，单击"确定"。
9. 单击右上角的时间编辑按钮，设置日志收集的"开始时间"和"结束时间"分别为告警产生时间的前后1小时，单击"下载"。
10. 请联系运维人员，并发送已收集的故障日志信息。
 
#### 告警清除
此告警修复后，系统会自动清除此告警，无需手工清除。
#### 参考信息
不涉及。
