開發與維運

【最佳實踐】大數據時代,通過OSS快照遷移Elasticsearch數據

當您需要在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服務、存儲計算分離、智能運維、達摩院分詞器、商業插件等功能。

操作流程

  1. 準備工作

    完成搭建自建Elasticsearch集群、創建OSS Bucket、創建阿里雲Elasticsearch集群。
    
  2. 步驟一:安裝elasticsearch-repository-oss插件

    在自建Elasticsearch各節點中安裝elasticsearch-repository-oss插件,插件安裝後才可在自建Elasticsearch中創建OSS倉庫。
    
  3. 步驟二:在自建Elasticsearch集群中創建倉庫

    使用snapshot API在自建Elasticsearch中創建快照備份倉庫。
    
  4. 步驟三:為指定索引創建快照

    為需要遷移的索引創建快照,並將快照備份到已創建的倉庫中。
    
  5. 步驟四:在阿里雲Elasticsearch上創建相同倉庫

    在阿里雲Elasticsearch的Kibana控制檯中,使用snapshot API創建一個與自建Elasticsearch相同的快照備份倉庫。
    
  6. 步驟五:在阿里雲Elasticsearch上恢復快照

    將倉庫中已備份的自建Elasticsearch的快照恢復到阿里雲Elasticsearch中,完成數據遷移。
    
  7. 步驟六:查看快照恢復結果

    快照恢復後,查看恢復的索引和索引數據。
    

準備工作

  1. 準備自建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)。
    
  2. 開通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,不支持歸檔存儲類型。
    
  3. 創建目標阿里雲Elasticsearch實例,所選區域與您創建的Bucket相同。

    具體操作步驟請參見[創建阿里雲Elasticsearch實例](https://help.aliyun.com/document_detail/69055.html?spm=a2c4g.11186623.2.32.7275639dbLtjau#task-2444429)。
    

步驟一:安裝elasticsearch-repository-oss插件

  1. 連接自建Elasticsearch集群所在的ECS。

    說明: 連接ECS的方式請參見連接Linux實例

  2. 下載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
  3. 將安裝包解壓到自建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的安裝路徑。
  1. 修改插件的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

在這裡插入圖片描述

  1. 啟動自建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"
}'

index1index2為您需要備份的索引名稱。快照創建成功後,返回"accepted" : true

步驟四:在阿里雲Elasticsearch上創建相同倉庫

  1. 登錄阿里雲Elasticsearch的Kibana控制檯。

    登錄控制檯的具體步驟請參見[t615643.md\#](t615643.md#)。
    
  2. 在左側導航欄單擊Dev Tools
  3. 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首月免費

image.png
image.png

Leave a Reply

Your email address will not be published. Required fields are marked *