將Elasticsearch數(shù)據(jù)遷移至OpenStore智能混合存儲
如果您需要將商業(yè)版或自建Elasticsearch集群中的數(shù)據(jù)遷移至日志增強版實例的OpenStore智能混合存儲中,可以通過手動備份快照和恢復(fù)快照的方法來實現(xiàn)。本文介紹實現(xiàn)的具體操作。
前提條件
已開通阿里云對象存儲OSS,新建一個標準存儲類型的Bucket,且Bucket的地域與Elasticsearch實例的地域保持一致。 具體操作,請參見開通OSS服務(wù)和創(chuàng)建存儲空間。
源端Elasticsearch集群狀態(tài)正常。
操作步驟
本文提供的代碼均可以在阿里云Elasticsearch實例的Kibana控制臺上執(zhí)行。詳細信息,請參見登錄Kibana控制臺。
步驟一:準備環(huán)境
進入目標端Elasticsearch實例的Kibana控制臺。
具體操作,請參見登錄Kibana控制臺。
在Dev Tools的Console頁簽中輸入創(chuàng)建索引的代碼。
PUT product_info { "settings": { "number_of_shards": 3, "number_of_replicas": 1 }, "mappings": { "properties": { "productName":{"type":"text"}, "annual_rate":{"type":"keyword"}, "describe":{"type":"text"} } } }
寫入數(shù)據(jù)。
POST /product_info/_bulk?refresh=true {"index":{"_id": "1" }} {"productName":"理財產(chǎn)品A","annual_rate":"3.2200%","describe":"180天定期理財,最低20000起投,收益穩(wěn)定,可以自助選擇消息推送"} {"index":{"_id": "2" }} {"productName":"理財產(chǎn)品B","annual_rate":"3.1100%","describe":"90天定投產(chǎn)品,最低10000起投,每天收益到賬消息推送"} {"index":{"_id": "3" }} {"productName":"理財產(chǎn)品C","annual_rate":"3.3500%","describe":"270天定投產(chǎn)品,最低40000起投,每天收益立即到賬消息推送"} {"index":{"_id": "4" }} {"productName":"理財產(chǎn)品D","annual_rate":"3.1200%","describe":"90天定投產(chǎn)品,最低12000起投,每天收益到賬消息推送"}
步驟二:備份快照數(shù)據(jù)
修改索引Segment數(shù)。
將索引Force Merge為1個Segment。例如,對索引
product_info
進行操作。POST /product_info/_forcemerge?max_num_segments=1
檢查索引的Segment數(shù)為1。
GET _cat/segments/product_info?v
創(chuàng)建倉庫。 在源端Elasticsearch實例中創(chuàng)建一個名稱為
my_backup
的倉庫。PUT _snapshot/my_backup { "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/" } }
參數(shù)說明如下:
參數(shù)
說明
endpoint
OSS Bucket的內(nèi)網(wǎng)訪問域名。獲取方式,請參見訪問域名和數(shù)據(jù)中心。
access_key_id
用于標識用戶。獲取方式,請參見獲取AccessKey。
secret_access_key
用于驗證用戶的密鑰。獲取方式,請參見獲取AccessKey。
bucket
OSS Bucket的名稱。獲取方式,請參見控制臺創(chuàng)建存儲空間。
compress
打開快照文件的壓縮功能:
true:打開壓縮功能,僅應(yīng)用于元數(shù)據(jù)文件(索引映射和設(shè)置)。
false(默認值):不打開壓縮功能,數(shù)據(jù)文件未壓縮。
chunk_size
當您上傳的數(shù)據(jù)非常大時,配置此參數(shù)可以限制快照過程中分塊的大小。超過這個大小,數(shù)據(jù)將會被分塊上傳到OSS中。
base_path
倉庫的起始位置,默認為根目錄。可以指定具體快照的存放目錄,例如snapshot/myindex/。
創(chuàng)建快照。
將Force Merge后的
product_info
索引創(chuàng)建快照。例如:快照名為snapshot_1
。PUT _snapshot/my_backup/snapshot_1 { "indices": "product_info"}
查看快照進度,確認快照創(chuàng)建成功。例如,查看快照名為
snapshot_1
的快照狀態(tài)。GET _snapshot/my_backup/snapshot_1
步驟三:恢復(fù)快照數(shù)據(jù)到Openstore
進入目標端Elasticsearch實例的Kibana控制臺。
具體操作,請參見登錄Kibana控制臺。
創(chuàng)建倉庫。
在目標端Elasticsearch實例中創(chuàng)建一個名稱為
my_backup
的倉庫。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/" } }
恢復(fù)快照。
將
product_info
索引的快照恢復(fù)到目標端Elasticsearch實例中。說明如果源端實例是冷熱分離,恢復(fù)的索引需要去除box type,否則索引無法分配。
如果集群中存在與待恢復(fù)索引同名的索引,需要提前刪除或者關(guān)閉該同名索引,否則恢復(fù)會失敗。
如果跨地域恢復(fù)集群快照,需要先將原地域OSS中的快照數(shù)據(jù)遷移到目標地域OSS中,再恢復(fù)到目標地域的Elasticsearch集群中。OSS間遷移的具體操作,請參見阿里云OSS之間遷移教程。
POST _snapshot/my_restore/snapshot_1/_restore { "indices": "product_info", "index_settings": { "index.routing.allocation.require.box_type": null, "index": { "number_of_replicas": 1, "replication": { "type": "segment" }, "codec": "OpenIndex", "allocation": { "existing_shards_allocator": "open_store_allocator" }, "refresh_interval": "1s", "store": { "type": "openstore", "openstore": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "ram_name": "snapshot-role-133******", "type": "hybrid", "bucket_name": "openstore-133******-es-cn-5yd******" } } } } }
endpoint、ram_name和bucket_name是OpenStore集群中的默認參數(shù),可以通過以下命令獲取這些參數(shù)的信息:
GET _component_template/component-hybrid-openstore-index-template
補充方案
如果源端和目標端實例滿足跨集群OSS倉庫的前提條件,您也可以通過設(shè)置跨集群OSS倉庫將源端Elasticsearch集群中的數(shù)據(jù)遷移到OpenStore智能混合存儲中。
操作需要注意:
無需在源端和目標端實例上創(chuàng)建倉庫,直接添加OSS倉庫引用。
在步驟二中創(chuàng)建倉庫時,必須使用aliyun_auto_snapshot。