--- title: "事务日志损坏 (translog_corrupted_exception) 错误排查与解决" date: 2026-03-26 lastmod: 2026-03-26 description: "translog_corrupted_exception 表示事务日志文件已损坏无法读取或恢复数据,通常由磁盘故障、异常断电或文件系统错误引起。" tags: ["事务日志", "数据损坏", "存储"] summary: "为什么这个错误发生 # translog_corrupted_exception 表示事务日志文件已损坏,无法读取或恢复数据。 这个错误可能由以下原因引起: 磁盘故障:物理磁盘损坏 异常断电:突然断电导致写入不完整 文件系统错误:文件系统损坏 内存错误:内存错误导致数据损坏 如何修复这个错误 # 1. 检查磁盘健康 # # 检查磁盘错误 dmesg | grep -i error smartctl -a /dev/sda 2. 从副本恢复 # # 从副本恢复数据 3. 从快照恢复 # # 从快照恢复 POST /_snapshot/<repo>/<snap>/_restore { "indices": "<index>" } 4. 重建分片 # # 删除损坏的分片并重建 POST /_cluster/reroute { "commands": [{ "allocate_empty_primary": { "index": "<index>", "shard": 0, "node": "<node>", "accept_data_loss": true } }] } 预防措施 # 使用 RAID 保护数据 配置 UPS 防止断电 定期备份数据 监控磁盘健康 " --- ## 为什么这个错误发生 `translog_corrupted_exception` 表示事务日志文件已损坏,无法读取或恢复数据。 这个错误可能由以下原因引起: 1. **磁盘故障**:物理磁盘损坏 2. **异常断电**:突然断电导致写入不完整 3. **文件系统错误**:文件系统损坏 4. **内存错误**:内存错误导致数据损坏 ## 如何修复这个错误 ### 1. 检查磁盘健康 ```bash # 检查磁盘错误 dmesg | grep -i error smartctl -a /dev/sda ``` ### 2. 从副本恢复 ```bash # 从副本恢复数据 ``` ### 3. 从快照恢复 ```bash # 从快照恢复 POST /_snapshot///_restore { "indices": "" } ``` ### 4. 重建分片 ```bash # 删除损坏的分片并重建 POST /_cluster/reroute { "commands": [{ "allocate_empty_primary": { "index": "", "shard": 0, "node": "", "accept_data_loss": true } }] } ``` ### 预防措施 - 使用 RAID 保护数据 - 配置 UPS 防止断电 - 定期备份数据 - 监控磁盘健康