ES节点服务器异常掉电重启导致shard不能启动的问题修复

本文记录了一次因异常断电导致的Elasticsearch节点服务器translog损坏问题,详细描述了问题现象、解决步骤及translog的重要性。在问题发生后,通过关闭集群,删除损坏的translog恢复日志文件,然后重启集群,成功解决了TranslogCorruptedException异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天elasticsearch两个节点服务器异常掉电重启,遇到translog损坏的异常,将修复的过程记录下来。

1、问题

单机数据量有2亿+,一个index,20+个字段,使用bulk不停的写数据,bulk.size=5000,此时机器意外断电宕机。

机器修复后重启ES,出现translogCorruptedException异常:

[2018-04-18 16:29:25,950][WARN ][indices.cluster          ] [elasticsearch_43_ssd] [ocslog-2018.04.18][0] failed to start shard
org.elasticsearch.index.gateway.IndexShardGatewayRecoveryException: [ocslog-2018.04.18][0] failed to recover shard
        at org.elasticsearch.index.gateway.local.LocalIndexShardGateway.recover(LocalIndexShardGateway.java:287)
        at org.elasticsearch.index.gateway.IndexShardGatewayService$1.run(IndexShardGatewayService.java:132)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.elasticsearch.index.translog.TranslogCorruptedException: translog corruption while reading from stream
        at org.elasticsearch.index.translog.ChecksummedTranslogStream.read(ChecksummedTranslogStream.java:70)
        at org.elasticsearch.index.gateway.local.LocalIndexShardGateway
### KubeSphere 节点断电后重启步骤或恢复指南 当 KubeSphere 节点因断电或其他原因导致宕机时,可以通过以下方式完成节点重启和集群状态的恢复: #### 1. **检查节点状态** 使用 `kubectl` 命令查看当前 Kubernetes 集群的状态以及各个节点的情况: ```bash kubectl get nodes ``` 如果发现某些节点处于 NotReady 状态,则说明这些节点可能需要进一步处理。 #### 2. **重新启动受影响的节点** 对于物理机或者虚拟机环境中的节点,可以直接通过操作系统层面的操作来重启机器。如果节点是容器化运行的(例如 Docker 或者其他容器引擎),则需确保容器管理工具正常工作后再继续后续操作。 #### 3. **等待节点重新加入集群并验证健康状况** 当所有节点都成功启动之后,再次执行命令确认它们已经恢复正常运作: ```bash watch -n 1 'kubectl get pods --all-namespaces | grep -v Running' ``` 上述命令会持续监控直到所有的 Pod 运行良好为止[^1]。 #### 4. **调整 Elasticsearch (若有集成)** 若您的环境中集成了 Elasticsearch 并且其数据存储依赖分布式架构,在经历了一次完整的停服事件之后还需要特别注意 ES 的分片同步情况。按照标准流程先暂停新的 shard assignment ,再逐一安全地重开每一个 instance 。具体做法如下所示 : 关闭分片分配: ```json PUT _cluster/settings { "persistent": { "cluster.routing.allocation.enable": "none" } } ``` 各节点逐个重启完成后,开启自动分配功能: ```json PUT _cluster/settings { "transient": { "cluster.routing.allocation.enable": "all" } } ``` 此过程有助于防止部分副本丢失从而影响整体查询性能等问题发生 [^2]. #### 5. **Nova Compute Service 自动恢复机制设置(针对 OpenStack 用户场景下的额外建议)** 如果您正在使用的云平台基于 OpenStack 构建的话 , 可考虑激活 Nova compute service 中关于 guest vm state preservation upon host reboot 的选项 . 编辑 `/etc/nova/nova.conf`, 添加下面这一行参数 : ```ini resume_guests_state_on_host_boot=True ``` 接着记得重启对应的服务进程以使更改生效 : ```bash systemctl restart openstack-nova-compute.service ``` 设置完毕以后即使未来主机遭遇突发掉线也不会造成客户实例永久关停的局面 [^3]. #### 6. **排查网络连通性障碍** 在实际运维过程中可能会碰到由于 ARP 表项污染等原因引起的短暂失联现象。此时应当借助抓包分析手段定位根源所在,并及时修正错误配置记录以防同类事故重复上演 [^5]. --- ### 注意事项 - 整个修复期间务必保持耐心观察各项指标变化趋势,切勿贸然采取激进措施以免扩大损害范围。 - 提前做好应急预案演练非常重要,这样可以在紧急时刻迅速响应减少损失时间成本。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值