當您需要在Elasticsearch集群間遷移數據,或者需要恢復Elasticsearch中的數據時,可通過OSS快照的方式來實現。OSS快照方式的數據遷移,適用於數據量比較大的場景,簡單流程如下。
本文以將自建Elasticsearch遷移至阿里雲Elasticsearch中為例,為您介紹通過OSS快照遷移數據的具體方法。
阿里雲Elasticsearch兼容開源Elasticsearch的功能,以及Security、Machine Learning、Graph、APM等商業功能,致力於數據分析、數據搜索等場景服務。支持5.5.3、6.3.2、6.7.0、6.8.0和7.4.0等版本,並提供了商業插件X-Pack服務。在開源Elasticsearch的基礎上提供企業級權限管控、安全監控告警、自動報表生成等功能。阿里雲Elasticsearch為您提供1個月的免費試用活動,單擊此處即可免費試用。
與開源Elasticsearch相比,阿里雲Elasticsearch提供了高可用性、高可靠性、高安全性等功能特性。並且提供Elasticsearch和Kibana的全託管服務,您可以按需付費,即買即用。在此基礎上,還對內核性能進行了優化,提供獨立的index build服務、存儲計算分離、智能運維、達摩院分詞器、商業插件等功能。
操作流程
-
完成搭建自建Elasticsearch集群、創建OSS Bucket、創建阿里雲Elasticsearch集群。
-
步驟一:安裝elasticsearch-repository-oss插件
在自建Elasticsearch各節點中安裝elasticsearch-repository-oss插件,插件安裝後才可在自建Elasticsearch中創建OSS倉庫。
-
使用snapshot API在自建Elasticsearch中創建快照備份倉庫。
-
為需要遷移的索引創建快照,並將快照備份到已創建的倉庫中。
-
在阿里雲Elasticsearch的Kibana控制檯中,使用snapshot API創建一個與自建Elasticsearch相同的快照備份倉庫。
-
將倉庫中已備份的自建Elasticsearch的快照恢復到阿里雲Elasticsearch中,完成數據遷移。
-
快照恢復後,查看恢復的索引和索引數據。
準備工作
-
準備自建Elasticsearch集群。
如果您還沒有自建Elasticsearch集群,建議您使用阿里雲ECS進行搭建,具體操作步驟請參見[安裝並運行Elasticsearch](https://www.elastic.co/guide/cn/elasticsearch/guide/current/running-elasticsearch.html)。 本文以單節點的Elasticsearch集群為例進行演示,版本為6.7.0。實際生產中您可以購買多個相同專有網絡VPC(Virtual Private Cloud)的ECS搭建Elasticsearch集群,購買ECS的具體步驟請參見[使用嚮導創建實例](https://help.aliyun.com/document_detail/87190.html?spm=a2c4g.11186623.2.29.6739639dydpjkZ#task-vwq-5g4-r2b)。
-
開通OSS服務,並創建與自建Elasticsearch所在ECS相同區域的Bucket。
具體操作步驟請參見[開通OSS服務](https://help.aliyun.com/document_detail/31884.html?spm=a2c4g.11186623.2.30.7275639dbLtjau#task-njz-hf4-tdb)和[創建存儲空間](https://help.aliyun.com/document_detail/31885.html?spm=a2c4g.11186623.2.31.7275639dbLtjau#task-u3p-3n4-tdb)。 **說明:** 請創建標準存儲類型的OSS Bucket,不支持歸檔存儲類型。
-
創建目標阿里雲Elasticsearch實例,所選區域與您創建的Bucket相同。
具體操作步驟請參見[創建阿里雲Elasticsearch實例](https://help.aliyun.com/document_detail/69055.html?spm=a2c4g.11186623.2.32.7275639dbLtjau#task-2444429)。
步驟一:安裝elasticsearch-repository-oss插件
- 連接自建Elasticsearch集群所在的ECS。
說明: 連接ECS的方式請參見連接Linux實例。
-
下載elasticsearch-repository-oss插件。
本文使用6.7.0版本的插件,要求JDK為11.0及以上版本。
wget https://github.com/aliyun/elasticsearch-repository-oss/releases/download/v6.7.0/elasticsearch-repository-oss-6.7.0.zip
-
將安裝包解壓到自建Elasticsearch各節點安裝路徑的plugins目錄下。
unzip -d /home/elastic/app/elasticsearch-6.7.0/plugins elasticsearch-repository-oss-6.7.0.zip
**說明:** 請將`/home/app/elasticsearch-6.7.0`替換為您自建Elasticsearch的安裝路徑。
-
修改插件的plugin-descriptor.properties文件中Elasticsearch集群的版本號,將其設置為當前Elasticsearch集群的版本。
說明: 如果您使用的elasticsearch-repository-oss插件的版本與您自建Elasticsearch集群的版本相同,可忽略此步驟。
使用以下命令打開plugin-descriptor.properties文件,將elasticsearch.version設置為當前Elasticsearch集群的版本。
vim /home/elastic/app/elasticsearch-6.7.0/plugins/plugin-descriptor.properties
-
啟動自建Elasticsearch集群各節點。
cd /home/app/elasticsearch-6.7.0/bin ./elasticsearch -d
**說明:** 請將`/home/app/elasticsearch-6.7.0`替換為您自建Elasticsearch的安裝路徑。
步驟二:在自建Elasticsearch集群中創建倉庫
連接自建Elasticsearch所在的ECS,執行如下命令創建倉庫。
curl -H "Content-Type: application/json" -XPUT localhost:9200/_snapshot/es_backup -d' {"type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "your_accesskeyid", "secret_access_key":"your_accesskeysecret", "bucket": "es-backup-es", "compress": true }}'
參數 | 說明 |
---|---|
es_backup |
倉庫名稱,可自定義。 |
type |
倉庫類型,請設置為oss 。 |
endpoint |
OSS Bucket的訪問地址,請參見訪問域名和數據中心獲取。 說明: 如果自建Elasticsearch所在ECS與您的OSS在同一區域,請使用內網地址,否則請使用外網地址。 |
access_key_id |
創建OSS Bucket的賬號的AccessKey ID,獲取方式請參見如何獲取AccessKeyId和AccessKeySecret。 |
secret_access_key |
創建OSS Bucket的賬號的AccessKey Secret,獲取方式請參見如何獲取AccessKeyId和AccessKeySecret。 |
bucket |
您創建的OSS Bucket名稱。 |
compress |
是否壓縮。 |
創建成功後,返回"acknowledge":true
。
步驟三:為指定索引創建快照
在自建Elasticsearch中創建一個快照,用來備份您需要遷移的索引數據。創建快照時,默認會備份所有打開的索引。如果您不想備份系統索引,例如以.kibana、.security、.monitoring等開頭的索引,可在快照時指定需要備份的索引。
注意: 建議您不要備份系統索引,因為系統索引會佔用較大空間。
curl -H "Content-Type: application/json" -XPUT localhost:9200/_snapshot/es_backup/snapshot_1?pretty -d'
{
"indices": "index1,index2"
}'
index1
和index2
為您需要備份的索引名稱。快照創建成功後,返回"accepted" : true
。
步驟四:在阿里雲Elasticsearch上創建相同倉庫
-
登錄阿里雲Elasticsearch的Kibana控制檯。
登錄控制檯的具體步驟請參見[t615643.md\#](t615643.md#)。
- 在左側導航欄單擊Dev Tools。
-
在Console中執行以下命令,創建與自建Elasticsearch相同的倉庫。
PUT _snapshot/es_backup { "type": "oss", "settings": { "endpoint": "oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "your_accesskeyid", "secret_access_key": "your_accesskeysecret", "bucket": "es-backup-es", "compress": true } }
步驟五:在阿里雲Elasticsearch上恢復快照
參見步驟四:在阿里雲Elasticsearch上創建相同倉庫,在Kibana控制檯上執行以下命令,恢復快照中的所有索引(除過.
開頭的系統索引)。
POST _snapshot/es_backup/snapshot_1/_restore
{"indices":"*,-.monitoring*,-.security_audit*","ignore_unavailable":"true"}
命令執行成功,返回"accepted" : true
。
以上命令會恢復快照中的所有索引,您也可以選擇需要恢復的索引。同時如果阿里雲Elasticsearch集群中有同名索引,而您想在不替換現有數據的前提下,恢復舊數據來驗證內容,或者處理其他任務,可在恢復過程中重命名索引。
POST _snapshot/es_backup/snapshot_1/_restore
{
"indices":"index1",
"rename_pattern": "index(.+)",
"rename_replacement": "restored_index_$1"
}
說明: 更多快照和恢復命令請參見快照備份與恢復命令。
步驟六:查看快照恢復結果
參見步驟四:在阿里雲ES上創建相同倉庫,在Kibana控制檯上執行以下命令,查看恢復結果。
-
查看恢復的索引
GET /_cat/indices?v
-
查看恢復的索引數據
GET /index1/_search
執行成功後,返回結果如下。
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 1.0,
"hits" : [
{
"_index" : "index1",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"productName" : "testpro",
"annual_rate" : "3.22%",
"describe" : "testpro"
}
}
]
}
}
相關活動
更多折扣活動,請訪問阿里雲 Elasticsearch 官網。
阿里雲 Elasticsearch 商業通用版,1核2G ,SSD 20G首月免費
阿里雲 Logstash 2核4G首月免費