當需要將一個 Elasticsearch 執行個體的自動快照備份資料恢複到同地區、同帳號下的另一個執行個體時,可通過設定跨叢集 OSS 倉庫實現。該功能在目標端執行個體中建立對源端執行個體快照倉庫的引用,隨後通過 Kibana Dev Tools 執行恢複命令完成資料移轉。
添加OSS倉庫引用
跨叢集 OSS 倉庫設定功能只支援高版本執行個體引用相同或低版本執行個體的倉庫,不支援低版本執行個體引用高版本倉庫。當高版本執行個體引用低版本執行個體的倉庫時,需要注意資料格式相容性。例如,5.5.3 版本支援多類型索引,而 6.7.0 版本不支援,此類索引恢複可能會出現問題。如果源端和目標端執行個體版本都是商業版 6.7.0,需確保兩個執行個體的核心版本都是最新或者目標端的核心版本比源端高。
在左側導覽列,單擊Elasticsearch執行個體。
在頂部功能表列處,選擇資源群組和地區。
在Elasticsearch執行個體中單擊目標執行個體 ID。
在左側導覽列,單擊資料備份。
在跨叢集OSS倉庫設定地區,單擊立即建立。如果不是首次添加倉庫引用,需要單擊建立OSS引用倉庫。
在建立OSS引用倉庫頁面,選擇源端執行個體。源端執行個體需滿足以下條件:與目標端執行個體在相同地區、歸屬於相同帳號,且源端執行個體版本低於或等於目標端執行個體版本。
單擊確認,添加成功後,源端執行個體顯示在當前頁面,並顯示引用倉庫的狀態。
添加引用倉庫後,目標端執行個體可能會短暫進入生效中狀態,期間無法修改執行個體配置(包括 Kibana 白名單等)。等待執行個體狀態恢複為正常後再執行後續操作。
倉庫列表通過訪問對應執行個體擷取,當執行個體在變更中、不健康或者負載特別高時,可能無法擷取倉庫資訊。此時可在源端執行個體的 Kibana 控制台中執行
GET _snapshot命令擷取所有倉庫的地址。
恢複索引資料
跨叢集 OSS 倉庫設定只實現了執行個體間倉庫的引用,不會自動回復資料。需要在目標端執行個體的 Kibana 控制台上手動執行恢複命令。具體步驟請參見通過Kibana串連叢集
在 Kibana 控制台左側導覽列,單擊Dev Tools。
查詢引用倉庫中的所有快照資訊。
以下樣本中
aliyun_snapshot_from_es-cn-a為引用倉庫名稱,替換為實際的引用倉庫名稱。GET /_cat/snapshots/aliyun_snapshot_from_es-cn-a?v該請求返回指定倉庫下所有快照資訊。
根據上一步擷取的快照 ID,執行以下命令恢複指定索引。
確保指定索引在目標端執行個體中處於關閉狀態或不存在,否則恢複時會報同名索引衝突錯誤。恢複
.開頭的系統索引可能會導致 Kibana 訪問失敗,建議不要恢複系統索引。恢複單個索引
POST _snapshot/aliyun_snapshot_from_es-cn-a/<快照ID>/_restore {"indices": "file-2019-08-25"}恢複多個索引
POST _snapshot/aliyun_snapshot_from_es-cn-a/<快照ID>/_restore {"indices": "kibana_sample_data_ecommerce,kibana_sample_data_logs"}恢複所有索引(排除系統索引)
POST _snapshot/aliyun_snapshot_from_es-cn-a/<快照ID>/_restore {"indices":"*,-.monitoring*,-.security*,-.kibana*,-.apm*,-.ds-ilm-history-*,-.tasks","ignore_unavailable":"true"}以上排除模式為常見系統索引樣本。不同版本的叢集可能包含其他系統索引,需根據實際叢集中的系統索引調整排除清單。通過以下命令查詢當前叢集中以
.開頭的系統索引,據此完善排除清單:GET _cat/indices/.*?v