使用手動快照將資料同步至PolarSearch
本文為您介紹如何使用手動快照將Elasticsearch或OpenSearch中的資料同步至PolarSearch。
適用範圍
Elasticsearch版本要求
僅PolarSearch 1.x版本支援從Elasticsearch 7.x版本的快照恢複資料,且快照中的索引需是在Elasticsearch 7.x中建立的原生索引。
如果索引是從Elasticsearch 6.x快照恢複到7.x但未經過
Reindex操作,則在7.x中進行快照後也無法在PolarSearch中恢複。低於7.x的版本(如6.x、5.x),需要依次向高版本進行
Restore和Reindex的版本迭代,直到迭代到7.x後再建立快照。
OpenSearch版本要求
PolarSearch 3.x版本支援從OpenSearch 3.x和2.x的快照恢複。
PolarSearch 1.x版本支援從OpenSearch 1.x的快照恢複。
為了生產遷移的順利進行,建議您先用一個測試快照進行遷移驗證,以準確評估遷移時間和驗證業務相容性。
準備工作
準備一個源端和目標端均可訪問的OSS Bucket,用於構建快照倉庫。關於快照倉庫的詳細參數說明,請參見手動備份與恢複PolarSearch資料。
步驟一:源端註冊快照倉庫
在源端Elasticsearch或OpenSearch中註冊快照倉庫。以Elasticsearch為例:
PUT _snapshot/{repo-name}
{
"type": "oss",
"settings": {
"endpoint": "{oss-endpoint}",
"bucket": "{bucket-name}",
"base_path": "{path-name}",
"access_key_id": "{your-Accesskey-Id}",
"secret_access_key": "{your-Accesskey-Secret}",
"compress": true,
"chunk_size": "500mb"
}
}{repo-name}:倉庫名稱,可自訂設定,例如es-polarsearch。base_path:在Elasticsearch中,base_path後面需要添加斜杠(/),例如"base_path": "snapshot/"。
步驟二:源端建立快照
在源端註冊快照倉庫後,執行以下命令為指定索引建立快照,將資料備份至OSS Bucket中。
PUT _snapshot/{repo-name}/{snapshot-name}?wait_for_completion=false { "indices": "*,-.monitoring*,-.security*,-.kibana*,-.apm*,-ilm-history*", "ignore_unavailable": "true" }(可選)通過以下命令查看快照狀態,確認快照建立完成:
GET _snapshot/{repo-name}/{snapshot-name}
步驟三:目標端註冊快照倉庫
將對應的快照倉庫註冊到目標端的PolarSearch中。
重要PolarSearch中註冊快照倉庫時的參數與Elasticsearch存在差異:
倉庫名稱:
{repo-name}需保持與源端註冊的快照倉庫名稱保持一致。快照檔案的根目錄路徑:在PolarSearch中,
base_path後面不需要添加斜杠(/),例如"base_path": "snapshot"。憑證參數名不同:PolarSearch使用
access_key和secret_key,而Elasticsearch使用access_key_id和secret_access_key。所在地區:PolarSearch需要額外指定OSS Bucket的所在地區
region參數。恢複限速:
max_restore_bytes_per_sec參數預設不限制。建議設定合理值(比如40 MB),預防快照恢複佔用較多叢集資源或者資料同步太快,超出自動擴容速度導致水位過高,進而快照恢複失敗,叢集狀態異常。快照限速:
max_snapshot_bytes_per_sec參數預設40 MB。不建議設定過高,預防佔用較多的叢集資源。
PUT _snapshot/{repo-name} { "type": "oss", "settings": { "endpoint": "{oss-endpoint}", "bucket": "{bucket-name}", "base_path": "{path-name}", "region": "{oss-region}", "access_key": "{your-Accesskey-Id}", "secret_key": "{your-Accesskey-Secret}", "compress": true, "chunk_size": "500mb", "max_restore_bytes_per_sec": "40mb", "max_snapshot_bytes_per_sec": "40mb" } }註冊完成後,查看快照是否可以訪問:
GET _snapshot/{repo-name}/{snapshot-name}
步驟四:恢複快照
在目標端PolarSearch中執行快照恢複操作。
POST _snapshot/{repo-name}/{snapshot-name}/_restore?wait_for_completion=false { "indices": "*,-.monitoring*,-.security*,-.kibana*,-.apm*,-ilm-history*", "ignore_unavailable": "true" }您可以通過以下命令確認快照恢複是否完成:
查看索引文檔數量。
GET _cat/indices查看對應索引的recovery狀態,當
type為snapshot且stage為DONE時,表示恢複完成。GET {index-name}/_recovery
效能參考
在8核32 GB兩個搜尋節點規格情境下,從快照中恢複1 TB資料大約需要17分鐘(含副本,總寫入資料量2 TB)。