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