重启节点会触发集群重新进行主分片选举

重启节点会触发集群重新进行主分片选举(master election)和分片分配(shard allocation),如果检测到某个主分片损坏,但副本分片完好,集群会自动将副本提升为新的主分片

1. 主分片损坏 ≠ 数据丢失

在 Elasticsearch 中:
  • 每个索引被分成多个 主分片(primary shard),每个主分片可以有 零个或多个副本分片(replica shard)。
  • 副本分片是主分片的 完整拷贝,并且是 实时同步的(近实时)。
所以,只要副本分片是 “in-sync”(同步的),即使主分片损坏,数据也不会丢失。

 

 

步骤说明
1. 节点离开集群 如果是主分片所在的节点宕机,master 会立即检测到
2. 分片不可用 master 发现某个主分片不可用(比如损坏或节点掉线)
3. 检查副本状态 master 会检查是否有 in-sync 的副本分片
4. 提升副本为主 如果有,master 会 将副本提升为新的主分片
5. 分配新副本 然后集群会尝试重新分配缺失的副本,保持冗余

 

 普通 shard state(所有分片都会经历)

表格
复制
状态含义
UNASSIGNED 分片尚未分配到任何节点
INITIALIZING 正在分配、恢复或重建
STARTED 正常在线,可接受读写
RELOCATING 正在节点间搬迁( rebalance / 手动迁移)

 

 

 

in-sync allocation IDs 记录哪些副本“追上”了主分片,可被提主 GET /<index>/_stats?level=shards → shard[].commit.user_data.in_sync
tracking allocation IDs 主分片正在“等待”哪些副本复制完成 GET /_cluster/state?metric=routing_table → shard[].tracking_allocation_ids

3. 小结一句话

  • in-sync 不是独立状态,而是 “allocation id 出现在 in-sync 列表” 的 布尔属性。
  • 副本分片只有在 STARTED 且 allocation id 在 in-sync 列表 里,才算 “in-sync 副本”,才有资格被 master 选为新主分片。

 

posted @ 2025-11-12 11:28  滴滴滴  阅读(6)  评论(0)    收藏  举报