--- title: "节点初始主分片恢复数量配置" date: 2026-03-07 lastmod: 2026-03-07 description: "控制单节点上初始主分片恢复数量的配置项说明" tags: ["集群配置", "分片恢复", "主分片管理"] summary: "配置项作用 # cluster.routing.allocation.node_initial_primaries_recoveries 配置项控制每个节点上允许同时进行的初始主分片恢复操作的最大数量。初始主分片恢复是指从本地存储、快照或本地分片恢复主分片的过程,不涉及从其他节点复制数据。 配置项类型 # 该配置项为动态配置,可以在运行时通过集群设置 API 进行修改。 默认值 # 4 是否必需 # 可选配置项(有默认值) 取值范围 # 0 ~ 正整数 配置格式 # # 默认配置 cluster.routing.allocation.node_initial_primaries_recoveries: 4 # 增加并发恢复数量 cluster.routing.allocation.node_initial_primaries_recoveries: 8 # 限制恢复操作 cluster.routing.allocation.node_initial_primaries_recoveries: 2 # 不限制恢复 cluster.routing.allocation.node_initial_primaries_recoveries: 20 相关配置项 # 配置项 默认值 说明 cluster.routing.allocation.node_initial_primaries_recoveries 4 初始主分片恢复数量 cluster.routing.allocation.node_concurrent_recoveries 2 总体并发恢复数量 cluster.routing.allocation.node_concurrent_incoming_recoveries 2 入站恢复数量 工作原理 # 初始主分片恢复机制:" --- ## 配置项作用 `cluster.routing.allocation.node_initial_primaries_recoveries` 配置项控制每个节点上允许同时进行的初始主分片恢复操作的最大数量。初始主分片恢复是指从本地存储、快照或本地分片恢复主分片的过程,不涉及从其他节点复制数据。 ## 配置项类型 该配置项为**动态配置**,可以在运行时通过集群设置 API 进行修改。 ## 默认值 ``` 4 ``` ## 是否必需 **可选配置项**(有默认值) ## 取值范围 ``` 0 ~ 正整数 ``` ## 配置格式 ```yaml # 默认配置 cluster.routing.allocation.node_initial_primaries_recoveries: 4 # 增加并发恢复数量 cluster.routing.allocation.node_initial_primaries_recoveries: 8 # 限制恢复操作 cluster.routing.allocation.node_initial_primaries_recoveries: 2 # 不限制恢复 cluster.routing.allocation.node_initial_primaries_recoveries: 20 ``` ## 相关配置项 | 配置项 | 默认值 | 说明 | |-------|-------|------| | `cluster.routing.allocation.node_initial_primaries_recoveries` | 4 | 初始主分片恢复数量 | | `cluster.routing.allocation.node_concurrent_recoveries` | 2 | 总体并发恢复数量 | | `cluster.routing.allocation.node_concurrent_incoming_recoveries` | 2 | 入站恢复数量 | ## 工作原理 初始主分片恢复机制: ``` ┌─────────────────────────────────────────────────────────────────┐ │ 初始主分片恢复并发控制 │ └─────────────────────────────────────────────────────────────────┘ 主分片分配请求 │ ▼ 检查恢复来源类型 │ ├── 从本地存储恢复 │ │ │ └── 计入 node_initial_primaries_recoveries │ ├── 从快照恢复 │ │ │ └── 计入 node_initial_primaries_recoveries │ └── 从本地分片恢复(Shrink/Split) │ └── 计入 node_initial_primaries_recoveries │ ▼ 检查当前初始恢复数量 │ ├── 当前数量 < node_initial_primaries_recoveries │ │ │ └── 允许恢复 │ └── 当前数量 >= node_initial_primaries_recoveries │ └── 节流,延迟恢复 ``` ## 恢复类型说明 ### 1. 初始主分片恢复(Initial Primary Recovery) 主分片从以下来源恢复: - **本地存储**:节点重启后从磁盘加载已有分片 - **快照仓库**:从备份快照恢复分片 - **本地分片操作**:Shrink、Split 等操作后的恢复 ### 2. 对比:副本恢复(Replica Recovery) 副本分片从其他节点复制数据,受 `node_concurrent_incoming_recoveries` 控制。 ## 使用场景 ### 1. 默认配置(推荐) ```yaml cluster.routing.allocation.node_initial_primaries_recoveries: 4 ``` 适用于大多数场景,特别是: - 集群重启后的恢复 - 从快照恢复索引 ### 2. 高性能存储环境 ```yaml cluster.routing.allocation.node_initial_primaries_recoveries: 10 ``` **适用场景:** - NVMe SSD 存储 - 需要快速恢复服务 - 集群规模较大 ### 3. 资源受限环境 ```yaml cluster.routing.allocation.node_initial_primaries_recoveries: 2 ``` **适用场景:** - HDD 存储 - 内存有限 - 避免启动时过载 ### 4. 从快照批量恢复 ```yaml # 临时提高恢复速度 cluster.routing.allocation.node_initial_primaries_recoveries: 15 ``` 恢复完成后可以调回默认值。 ## 推荐设置建议 | 场景 | 推荐值 | 说明 | |-----|-------|------| | 默认/通用 | 4 | 平衡性能和资源使用 | | NVMe SSD | 8-15 | 高性能可提高并发 | | SATA SSD | 4-6 | 中等性能 | | HDD | 2-4 | 避免磁盘过载 | | 大规模集群重启 | 6-10 | 加快恢复速度 | ## 监控建议 ```bash # 查看当前配置 GET /_cluster/settings?filter_path=*.cluster.routing.allocation.node_initial_primaries_recoveries # 查看正在恢复的分片 GET /_cat/recovery?v&h=i,s,t,bytes_percent,stage # 查看节点恢复状态 GET /_nodes/stats/indices?filter_path=nodes.*.indices.shards # 查看集群健康状态 GET /_cluster/health ``` ## 与其他恢复配置的区别 | 配置项 | 控制对象 | 恢复类型 | 默认值 | |-------|---------|---------|--------| | `node_initial_primaries_recoveries` | 主分片 | 本地/快照恢复 | 4 | | `node_concurrent_incoming_recoveries` | 副本分片 | 从其他节点接收 | 2 | | `node_concurrent_outgoing_recoveries` | 源节点 | 向其他节点发送 | 2 | ## 注意事项 1. **动态更新**:此配置为动态配置,可在线修改 2. **独立控制**:此配置独立于 `node_concurrent_recoveries` 3. **启动场景**:集群重启时会触发大量初始恢复 4. **快照恢复**:从快照恢复大量数据时可临时调高此值 5. **资源监控**:恢复期间监控 CPU、磁盘 I/O 和网络使用情况