Elasticsearch跨集群數據遷移

      網友投稿 1694 2022-05-29

      用戶在上華為云的時候經常需要將ES數據搬遷到云上的CSS服務,搬遷的源可以是自建的ES集群或者是其他云廠商的ES集群。目前的遷移方式一般是離線遷移,需要業務短暫停服。

      遷移方法

      遷移方法一般有以下幾種

      Logstash

      snapshot/restore

      reindex

      其他工具如elasticsearch-dump, esm等

      下面介紹Logstash和snapshot/restore的遷移方式。

      Logstash

      適合數據量不大 的場景。

      使用指導

      Logstash是ELK工具棧中的L,Logstash是開源的數據處理管道, 能夠從多個來源采集數據,轉換數據,然后將數據發送到需要的目的端。在用作ES數據遷移時,源端和目的端都是ES集群,源端使用ES的scroll API分頁讀取全量數據,目的端使用Bulk API批量寫入數據。

      下載Logstash

      可以從華為云鏡像站下載Logstash: https://mirrors.huaweicloud.com/logstash/

      與ES版本兼容性可以查看這張表: https://www.elastic.co/cn/support/matrix#matrix_compatibility,如源端和目標端的ES版本都是7.6.2,可以選擇使用Logstash ?6.8.x-7.9.x都是兼容的,盡量選擇可兼容的高版本。

      選擇一臺節點作為遷移節點,用來部署Logstash實例,該節點需要與源端和目標端的ES的網絡都是通的,可以采用VPN或者專線連接。將下載的Logstash上傳到該節點。

      配置Logstash,以下配置為一個示例

      input{

      elasticsearch{

      // 源端es地址

      hosts=> ?["http://192.168.1.214:9200", "http://192.168.1.215:9200"]

      // 需要遷移的索引列表,以逗號分隔,也可以使用通配符,如 index-*

      index=> "index1,index2"

      // 以下保持默認即可

      Elasticsearch跨集群數據遷移

      docinfo=>true

      // Logstash version >= 6.7 支持,低于該版本刪除該配置

      slices => 10

      size => 5000

      }

      }

      filter {

      mutate {

      // 去除無關字段

      remove_field => ["@timestamp", "@version"]

      }

      }

      output{

      elasticsearch{

      // 目的端es地址

      hosts => ["http://192.168.1.248:9200", "http://192.168.1.249:9200"]

      // 目的端索引名稱,以下配置為和源端保持一致

      index => "%{[@metadata][_index]}"

      // 目的端索引type,以下配置為和源端保持一致

      document_type => "%{[@metadata][_type]}"

      // 目標端數據的_id,如果不需要保留原_id,可以刪除以下這行,刪除后性能會更好

      document_id => "%{[@metadata][_id]}"

      }

      }

      在遷移的時候可以同時使用多臺機器多個Logstash實例同時遷移來提高遷移速度。

      優缺點

      Logstash使用簡單,配置清晰,能夠很好的支持ES的數據遷移。

      缺點在于在遷移過程中,如果出現異常會從頭重新開始,異常可能如網絡閃斷、ES負載高導致scroll API無響應等。

      Logstash遷移只會遷移數據,索引的Mapping需要在遷移前在目的端ES集群提前創建。

      如果索引數據中有時間戳字段,并且可以通過時間戳過濾出來入庫的新數據,則可以使用Logstash指定query來實現增量遷移。

      snapshot/restore

      適用于數據量大的場景。

      使用指導

      snapshot/restore是用來備份和恢復ES數據的,可以通過snapshot/restore來進行跨集群的數據遷移,在源端集群做備份,在目標端集群做恢復。

      備份恢復的版本兼容性如下表所示:

      如上表能看出,在源端為1.x版本做備份,可以恢復到目標端為2.x的集群中,其他類推。

      在源端集群中創建repository

      創建備份以前需要先創建repository,repository包含以下幾種類型:

      以下是在上海3創建obs備份恢復的repository的命令:

      PUT _snapshot/my_backup

      {

      "type" : "obs",

      "settings" : {

      "bucket" : "es-snapshots",

      "base_path" : "es-data/",

      "chunk_size" : "2g",

      "endpoint" : "obs.cn-east-3.myhuaweicloud.com",

      "region" : "cn-east-3",

      "compress" : "true",

      "access_key": "Acess Key",

      "secret_key": "Secret Key",

      "max_restore_bytes_per_sec": "100mb",

      "max_snapshot_bytes_per_sec": "100mb"

      }

      }

      obs:華為云對象存儲,需要安裝插件,并且打通源端集群與云上OBS的網絡

      fs:共享文件系統,將備份文件存放在共享文件系統中,也可以使用云上SFS服務掛載到ES本地盤

      s3:AWS S3對象存儲

      hdfs:HDFS文件系統中

      在源端集群中創建備份

      在源端集群執行命令開始創建備份:

      PUT _snapshot/my_backup/snapshot_1

      {

      "indices": "data-*",

      "ignore_unavailable": true,

      "include_global_state": false

      }

      其中indices為需要備份的索引名,支持通配符。

      將源端集群中的備份文件復制到目標集群倉庫中

      在第二步完成以后,將源端集群執行的備份文件復制到目標集群能訪問的倉庫中,如果是使用的華為云的obs作為備份倉庫,則不需要復制,在云上可以直接訪問到。

      在目標端集群中創建repository

      目標端集群中創建repository和在源端集群中創建倉庫一樣,如使用華為云obs,則與源端創建命令完全一樣。

      從備份中恢復索引

      從備份文件中恢復索引,可以配置需要恢復哪些索引,已經對索引名字進行重命名。

      POST /_snapshot/my_backup/snapshot_1/_restore

      {

      "indices": "data-*",

      "ignore_unavailable": true,

      "include_global_state": false,

      "rename_pattern": "(.+)",

      "rename_replacement": "$1"

      }

      查看備份恢復狀態

      GET?_snapshot/my_backup/snapshot_1/_status

      優缺點

      備份恢復的方式比較適合數據量較大的場景,采用直接備份和恢復索引文件的方式。但是這種方式需要在源端安裝插件并且重啟集群,可能會有一定的業務影響,可以考慮采用滾動的方式重啟。

      備份恢復在多次執行備份的時候是增量的模式,歷史備份中已經存在的文件不會重復備份。

      備份恢復是完全離線的方式,新增的數據不建議再采用備份恢復來遷移,新增數據一般不會很大,建議使用Logstash方式。

      Summary

      使用Logstash做集群遷移時,要求運行Logstash的機器可以同時訪問兩端的集群,網絡不通的情況下無法使用Logstash遷移。而snapshot/restore無此限制。

      Logstash將數據逐條讀取出來,再逐條寫入,所以數據量太大不適合使用。

      EI企業智能 云搜索服務 CSS AI平臺

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:華為云高校開發者青年班第七期——DevCloud的托馬斯商城部署——知識點總結
      下一篇:火熱的區塊鏈技術了解一下
      相關文章
      亚洲大尺度无码专区尤物| 成人亚洲性情网站WWW在线观看| 亚洲啪啪AV无码片| 婷婷亚洲天堂影院| 色偷偷亚洲第一综合网| 亚洲AV香蕉一区区二区三区| 日韩亚洲人成在线| 亚洲色成人网站WWW永久四虎| 亚洲中文字幕一区精品自拍| 久久亚洲国产成人影院| 亚洲熟女综合一区二区三区| 亚洲精品无AMM毛片| 亚洲精品国产suv一区88| 亚洲av无码专区亚洲av不卡| 亚洲国产欧洲综合997久久| 亚洲JLZZJLZZ少妇| 国内成人精品亚洲日本语音| 蜜桃传媒一区二区亚洲AV| 老子影院午夜伦不卡亚洲| 国产亚洲精彩视频| 亚洲中久无码不卡永久在线观看| 国产啪亚洲国产精品无码| 丁香五月亚洲综合深深爱| 国产亚洲高清不卡在线观看| 亚洲国产精彩中文乱码AV| 亚洲一本综合久久| 亚洲导航深夜福利| 亚洲字幕AV一区二区三区四区| 亚洲欧美国产国产一区二区三区 | 亚洲精品乱码久久久久久| 国产AV无码专区亚洲Av| 无码乱人伦一区二区亚洲一| 亚洲精品高清久久| 亚洲国产成+人+综合| 亚洲一区二区三区高清不卡| 亚洲精品无码你懂的| 亚洲av麻豆aⅴ无码电影| 在线观看午夜亚洲一区| 亚洲Av无码专区国产乱码DVD | 亚洲熟女乱色一区二区三区| 鲁死你资源站亚洲av|