以下是 Elasticsearch 叢集資料遷移 的步驟說明,格式已轉換為 Markdown:
Elasticsearch 叢集資料遷移
一、訂購新的叢集
-
訂購新叢集時,注意以下事項:
- 新叢集的資料節點數量需滿足遷移需求,確保索引副本數小於節點數。
- 新叢集節點規格(如 CPU、記憶體)應足夠容納舊叢集的資料。
-
新叢集上的準備工作:
- 刪除新叢集上所有索引。
- 安裝舊叢集已有的外掛(如 IK 分詞器)。
- 建立舊叢集上存在的模板、使用者資訊等。
示例命令:
# 外掛 GET /_cat/plugins # 生命週期管理 GET _ilm/policy # 模板 GET /_cat/templates?v # 管道 GET _ingest/pipeline
二、訂購物件儲存服務
- 搜尋並訂購 EOS 物件儲存,確保資源池與新叢集一致。
三、將舊叢集資料遷移至 EOS
-
遷移前檢查:使用
GET _cluster/health
,確保叢集狀態為“green”。 -
建立 Snapshot:
- 在遷移前,可以先進行全量快照,然後多次進行增量快照,減少停服時間。
- 建立快照儲存:
PUT /_snapshot/s3_backup { "type": "s3", "settings": { "bucket": "EOS桶名", "protocol": "http", "access_key": "<ak>", "secret_key": "<sk>", "endpoint": "", "storage_class": "standard", "max_snapshot_bytes_per_sec": "4000mb", "compress": true } }
-
業務停服:停止新資料寫入,修改業務連線 ES 的配置(如 IP、埠、密碼等)。
-
建立增量 Snapshot:在停服狀態下,將新增資料寫入 EOS。
四、新叢集上恢復 Snapshot
- 在新叢集建立 EOS 快照儲存連線。
- 控制恢復速率,避免影響叢集讀寫:
PUT _cluster/settings { "transient": { "indices.recovery.max_bytes_per_sec": "4000mb", "cluster.routing.allocation.node_concurrent_recoveries": "20" } }
- 恢復 Snapshot:
POST /_snapshot/s3_backup/snapshot3/_restore { "indices": "*", "index_settings": { "index.number_of_replicas": 0 }, "ignore_unavailable": false, "include_global_state": false, "include_aliases": true, "ignore_index_settings": ["index.lifecycle.indexing_complete"] }
五、資料驗證
- 驗證恢復狀態:
GET /_cat/recovery/ GET _cluster/health?pretty
- 對比資料量,與步驟 3.4 記錄的資料進行對比。
六、測試新叢集服務
- 測試業務在新叢集上是否正常執行,觀察一段時間。
- 如有問題,業務可以切回舊叢集。
七、資源退訂
- 確認新叢集服務正常後,退訂 EOS 和舊的 ES 叢集。
以上是資料遷移的完整步驟。