DBAtlas · Atlas de operações de banco de dados

Cluster Elasticsearch red/yellow e shards não atribuídos

Sintoma

_cluster/health 'red' ou 'yellow'; shards não atribuídos; leituras/escritas restritas ou dados inacessíveis.

1. Cor e causa

yellow = shards de réplica não atribuídos (os dados estão presentes, a durabilidade está reduzida). red = falta pelo menos um shard PRIMÁRIO (esses dados estão inacessíveis). Primeiro determine qual dos dois e por quê.

Elasticsearch

GET _cluster/health?level=indices
GET _cluster/allocation/explain

2. Liste os shards não atribuídos e o motivo

A coluna unassigned.reason dá a causa raiz (NODE_LEFT, ALLOCATION_FAILED, DISK etc.).

Elasticsearch

GET _cat/shards?v&h=index,shard,prirep,state,unassigned.reason&s=state

3. Trate as causas comuns

1) Disk watermark → acima de low, o nó não recebe novos shards; em flood_stage, os índices ficam somente leitura. 2) Um nó caiu / saiu. 3) A alocação ficou desativada. 4) Número de réplicas > número de nós elegíveis.

4. Corrija

Desbloqueie conforme a causa que se aplicar.

Elasticsearch

# If disk space was freed, remove the read-only block (7.4+ also lifts it automatically once below the high watermark):
PUT _all/_settings {"index.blocks.read_only_allow_delete": null}
# If allocation was left restricted, return it to the default (all):
PUT _cluster/settings {"persistent":{"cluster.routing.allocation.enable":null}}
# Retry failed allocations:
POST _cluster/reroute?retry_failed=true

5. Se continuar red e o primário estiver realmente perdido

Restaure o índice afetado a partir de um snapshot ou reindexe-o a partir dos dados de origem (_reindex). Definitivo: alertas de disk watermark, um número adequado de réplicas (≥1) e monitoramento da saúde dos nós.

Abrir no DBAtlas →