如果您需要將源端ES中的角色、用戶或可視化大盤的相關信息復制到目標端ES中使用,可以通過手動備份和恢復快照的方式實現。
前提條件
已開通對象存儲 OSS(Object Storage Service),并新建一個標準存儲類型的Bucket,且Bucket的地域與ES實例的地域保持一致。具體操作,請參見開通OSS服務和創建存儲空間。
創建2個阿里云ES實例。一個ES作為源端,一個ES作為目標端,ES不同版本之間恢復快照的兼容性,請參見Index compatibility。
說明8.x和7.x版本ES快照恢復有差異,本文以7.10版本ES實例之間的恢復和8.5版本ES實例之間的恢復為例。
ES不同版本之間恢復快照的兼容性,請參見Index compatibility。
注意事項
本文中的代碼均可以在阿里云ES實例的Kibana控制臺上執行。
在ES 8.0及以上版本中,features是備份和恢復系統索引和系統數據流的唯一方式。詳細信息,請參見Snapshot and restore。
遷移Elasticsearch角色和用戶
步驟一:準備環境
在源端ES實例中登錄Kibana控制臺。具體操作,請參見登錄Kibana控制臺。
創建角色
cj_test_role
和一個用戶kara
,并為該用戶分配cj_test_role
角色。具體操作,請參見通過Elasticsearch X-Pack角色管理實現用戶權限管控。
步驟二:備份快照數據
登錄源端ES實例的Kibana控制臺。具體操作,請參見登錄Kibana控制臺。
在源端ES實例中創建一個名稱為
my_backup
的倉庫。云上集群創建倉庫。
PUT _snapshot/my_backup/ { "type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "xxxx", "secret_access_key": "xxxxxx", "bucket": "xxxxxx", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/" } }
8.x版本自建集群創建倉庫,需要安裝elasticsearch-repository-oss插件。具體操作,請參見安裝elasticsearch-repository-oss插件。
說明關于該插件的詳細信息,請參見elasticsearch-repository-oss。
PUT /_snapshot/my_backup { "type": "oss", "settings": { "oss.client.endpoint": "oss-cn-shanghai.aliyuncs.com", "oss.client.access_key_id": "xxx", "oss.client.secret_access_key": "xxx", "oss.client.bucket": "xxxxxx", "oss.client.base_path":"snapshot/", "oss.client.compress": true } }
參數
說明
endpoint
OSS Bucket的內網訪問域名。獲取方式,請參見訪問域名和數據中心。
access_key_id
用于標識用戶。獲取方式,請參見獲取AccessKey。
secret_access_key
用于驗證用戶的密鑰。獲取方式,請參見獲取AccessKey。
bucket
OSS Bucket的名稱,需要一個已經存在的Bucket。獲取方式,請參見控制臺創建存儲空間。
compress
打開快照文件的壓縮功能:
true:打開壓縮功能,僅應用于元數據文件(索引映射和設置)。
false(默認值):不打開壓縮功能,數據文件未壓縮。
chunk_size
當您上傳的數據非常大時,配置此參數可以限制快照過程中分塊的大小。超過這個大小,數據將會被分塊上傳到OSS中。
base_path
倉庫的起始位置,默認為根目錄。可以指定具體快照的存放目錄,例如snapshot/myindex/。
源端ES實例中創建快照。
執行如下命令,在ES 7.10版本實例中創建快照
snapshot_1
。說明ES 7.10版本角色、用戶通過系統索引
.kibana*
,.security*
管理。ES 7.10版本創建快照命令中參數解析,請參見Restore snapshot API。
PUT _snapshot/my_backup/snapshot_1 { "indices": ".kibana*,.security*", "ignore_unavailable": true, "include_global_state": true }
執行如下命令,在ES 8.5版本實例中為角色和用戶相關的索引創建快照
snapshot_1
。說明ES 8.5版本創建快照命令中參數解析,請參見Create snapshot API。
PUT _snapshot/my_backup/snapshot_1 { "indices": "-*", "ignore_unavailable": true, "include_global_state": true, "feature_states": [ "security" ] }
確認成功創建快照。例如,執行如下命令,獲取
my_backup
倉庫中快照snapshot_1
的詳細信息。GET _snapshot/my_backup/snapshot_1
步驟三:恢復快照數據
登錄目標端ES實例的Kibana控制臺。具體操作,請參見登錄Kibana控制臺。
在目標端ES實例中創建一個名稱為
my_restore
的倉庫。PUT _snapshot/my_restore { "type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "[your_access_key_id]", "secret_access_key": "[your_secret_access_key]", "bucket": "[your_bucket_name]", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/" } }
將源端ES實例中的快照恢復到目標端ES實例中。
ES為7.10版本,在目標端進行如下操作恢復快照。
說明7.10及以下版本在恢復快照前需要先關閉目標端的系統索引
.kibana*
和.security*
,并在恢復快照后盡快開啟被關閉的系統索引。關閉系統索引可能會導致Elasticsearch實例功能不可用或受限。例如,關閉
.kibana
可能導致Kibana無法使用;關閉.security
可能導致安全功能受限。建議您提前備份數據,以便在需要時進行恢復。
建議在目標端ES的業務低峰期或停止服務時操作。
如果Kibana控制臺不能關閉這些索引,建議通過終端操作。具體操作,請參見管理Elasticsearch的curl命令。
關閉目標端系統索引
.kibana*
和.security*
。POST /<index name>/_close
恢復源端快照。
POST /_snapshot/my_restore/snapshot_1/_restore { "indices": ".kibana*,.security*", "ignore_unavailable": true, "include_global_state": false }
開啟目標端系統索引
.kibana*
和.security*
。POST /<index name>/_open
ES為8.5版本,在目標端執行如下代碼恢復快照
snapshot_1
。POST _snapshot/my_restore/snapshot_1/_restore { "feature_states": [ "security" ], "include_global_state": false, "indices": "-*" }
驗證角色和用戶是否遷移成功。
在頁面左上角,選擇
。在左側菜單欄,選擇
,可以看到已經將源端中角色為cj_test_role
的用戶kara
恢復到了目標端ES上。
遷移kibana可視化大盤
步驟一:準備環境
在源端ES實例中登錄Kibana控制臺。具體操作,請參見登錄Kibana控制臺。
添加樣例數據。
說明以下操作步驟以ES 8.5版本為例,其他版本操作略有不同,以控制臺為準。
在Kibana主頁,通過添加集成開始使用區域單擊試用樣例數據。
在樣例數據頁簽,單擊其他樣例數據集。
單擊Sample flight data數據集下的添加數據。
待添加數據變為查看數據時,表示該數據集已添加完成。添加樣例數據后,Kibana會自動創建一些相關的可視化。
在Kibana控制臺左上角,選擇
,在可視化大盤中查看已存在的可視化,例如【航班】到達地天氣、【航班】延誤與取消等。
步驟二:備份快照數據
登錄源端ES實例的Kibana控制臺。具體操作,請參見登錄Kibana控制臺。
在源端ES實例中創建一個名稱為
my_backup
的倉庫。云上集群創建倉庫。
PUT _snapshot/my_backup/ { "type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "xxxx", "secret_access_key": "xxxxxx", "bucket": "xxxxxx", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/" } }
8.x版本自建集群創建倉庫,需要安裝elasticsearch-repository-oss插件。具體操作,請參見安裝elasticsearch-repository-oss插件。
說明關于該插件的詳細信息,請參見elasticsearch-repository-oss。
PUT /_snapshot/my_backup { "type": "oss", "settings": { "oss.client.endpoint": "oss-cn-shanghai.aliyuncs.com", "oss.client.access_key_id": "xxx", "oss.client.secret_access_key": "xxx", "oss.client.bucket": "xxxxxx", "oss.client.base_path":"snapshot/", "oss.client.compress": true } }
參數
說明
endpoint
OSS Bucket的內網訪問域名。獲取方式,請參見訪問域名和數據中心。
access_key_id
用于標識用戶。獲取方式,請參見獲取AccessKey。
secret_access_key
用于驗證用戶的密鑰。獲取方式,請參見獲取AccessKey。
bucket
OSS Bucket的名稱,需要一個已經存在的Bucket。獲取方式,請參見控制臺創建存儲空間。
compress
打開快照文件的壓縮功能:
true:打開壓縮功能,僅應用于元數據文件(索引映射和設置)。
false(默認值):不打開壓縮功能,數據文件未壓縮。
chunk_size
當您上傳的數據非常大時,配置此參數可以限制快照過程中分塊的大小。超過這個大小,數據將會被分塊上傳到OSS中。
base_path
倉庫的起始位置,默認為根目錄。可以指定具體快照的存放目錄,例如snapshot/myindex/。
源端ES實例中創建快照。
執行如下命令,在ES 7.10版本實例中創建快照
snapshot_2
。說明ES 7.10版本創建快照命令中參數解析,請參見Restore snapshot API。
PUT _snapshot/my_backup/snapshot_2 { "indices": ".kibana*,.security*", "ignore_unavailable": true, "include_global_state": true }
執行如下命令,在ES 8.5版本實例中為可視化大盤相關的索引創建快照
snapshot_2
。說明ES 8.5版本創建快照命令中參數解析,請參見Create snapshot API。
PUT _snapshot/my_backup/snapshot_2 { "indices": "-*", "ignore_unavailable": true, "include_global_state": true, "feature_states": [ "security","kibana" ]
確認成功創建快照。例如,執行如下命令,獲取
my_backup
倉庫中快照snapshot_2
的詳細信息。GET _snapshot/my_backup/snapshot_2
步驟三:恢復快照數據
登錄目標端ES實例的Kibana控制臺。具體操作,請參見登錄Kibana控制臺。
在目標端ES實例中創建一個名稱為
my_restore
的倉庫。PUT _snapshot/my_restore { "type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "[your_access_key_id]", "secret_access_key": "[your_secret_access_key]", "bucket": "[your_bucket_name]", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/" } }
將源端ES實例中的快照恢復到目標端ES實例中。
ES為7.10版本,在目標端進行如下操作恢復快照。
說明7.10及以下版本在恢復快照前需要先關閉目標端的系統索引
.kibana*
和.security*
,并在恢復快照后盡快開啟被關閉的系統索引。關閉系統索引可能會導致Elasticsearch實例功能不可用或受限。例如,關閉
.kibana
可能導致Kibana無法使用;關閉.security
可能導致安全功能受限。建議您提前備份數據,以便在需要時進行恢復。
建議在目標端ES的業務低峰期或停止服務時操作。
如果Kibana控制臺不能關閉系統索引,建議通過終端操作。具體操作,請參見管理Elasticsearch的curl命令。
關閉目標端系統索引
.kibana*
和.security*
。POST /<index name>/_close
恢復源端快照。
POST /_snapshot/my_restore/snapshot_2/_restore { "indices": ".kibana*,.security*", "ignore_unavailable": true, "include_global_state": false }
開啟目標端系統索引
.kibana*
和.security*
。POST /<index name>/_open
ES為8.5版本,在目標端執行如下代碼恢復快照
snapshot_2
。POST _snapshot/my_restore/snapshot_2/_restore { "feature_states": [ "security","kibana" ], "include_global_state": false, "indices": "-*" }
驗證可視化大盤是否遷移成功。
在頁面左上角,選擇
,查看從源端復用到目標端的可視化。