
# ALM-45445 ClickHouse写入分布式表时发送数据文件到远端分片失败
![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
本章节仅适用于MRS 3.3.1及之后版本。
#### 告警解释
ClickHouse实例分布式表检查模块300秒检查一次，如果连续失败的次数超过配置的阈值，则触发上报告警，此时ClickHouse写入分布式表的节点无法正常发送数据文件到远端分片节点。
当系统检测到连续失败的次数低于阈值时，告警恢复。
#### 告警属性
| 告警ID  | 告警级别 | 是否可自动清除 |
|:---|:---|:---|
| 45445 | 重要   | 是       |
   
| 变更类型 | 变更版本  | 变更描述  | 变更原因  |
|:---|:---|:---|:---|
| 新增   | 3.3.1 | 首次增加。 | 首次增加。 |
   
#### 告警参数
| 类别   | 参数名称 | 参数含义          |
|:---|:---|:---|
| 定位信息 | 来源   | 产生告警的集群或系统名称。 |
| 定位信息 | 服务名  | 产生告警的服务名称。    |
| 定位信息 | 角色名  | 产生告警的角色名称。    |
| 定位信息 | 主机名  | 产生告警的主机名。     |
   
#### 对系统的影响
当ClickHouse写入分布式表节点发送数据文件到远端分片节点失败时，会导致执行分布式表查询等操作结果异常。
#### 可能原因
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. 执行如下SQL语句，根据data_path的值获取对应的分片，例如data_path为"/srv/BigData/clickhouse/data1.../shard2_all_replicas"，则分片为shard2。
   
   **select database, table, data_path, data_files, error_count from system.distribution_queue where data_files != 0 and error_count != 0;**
   
   
4. 执行下面SQL语句，获取发送异常的分片（与[步骤 3]中分片编号相同的shard_num对应的分片）节点IP（系统表system.clusters中host字段值）。
   
   **select \* from system.clusters;**
   
   
5. 参考[步骤 2]登录ClickHouse节点（[步骤 4]获取的节点IP），执行以下语句，查看是否可以正常返回结果：
   
   **SELECT 1;**
   - 是，执行[步骤 6]。
   
   - 否，执行[步骤 10]。
   
   
   
   
6. 参考[步骤 2]登录ClickHouse节点（[步骤 4]获取的节点IP），执行以下语句，其中database_name和table_name为分布式表对应本地表的库名和表名，
   
   **select name,type from system.columns where database='** *database_name* **' and table='** *table_name* **'**
   
   
7. 参考步骤2登录上报告警的ClickHouse节点，执行以下语句，其中database_name和table_name为写入的分布式表的库名和表名，
   
   **select name,type from system.columns where database='** *database_name* **' and table='** *table_name* **'**
   
   
8. 对比[步骤 6]和[步骤 7]的查询结果是否一致，
   
   - 是，执行[步骤 10]。
   
   - 否，请确保分布式表和对应的本地表的列信息一致，再尝试写入分布式表。
   
   
   
   
9. 等待几分钟查看告警是否消失， 
   - 是，操作结束。
   
   - 否，执行[步骤 10]。
   
   
   
   
**收集故障信息**
10. 在FusionInsight Manager界面，选择"运维 \> 日志 \> 下载"。
11. 在"服务"中勾选待操作集群的"ClickHouse"。
12. 在"主机"中选择异常的主机，单击"确定"。
13. 单击右上角的时间编辑按钮，设置日志收集的"开始时间"和"结束时间"分别为告警产生时间的前后1小时，单击"下载"。
14. 请联系运维人员，并发送已收集的故障日志信息。
 
#### 告警清除
此告警修复后，系统会自动清除此告警，无需手工清除。
#### 参考信息
不涉及。
