ES2.X 到 ES5.x的一次數據遷移

gradle的安裝

鏈接地址:https://gradle.org/releases/

下載binary-only

這裏寫圖片描述

解壓下載的壓縮包到指定位置,比如:

D:\program\gradle-4.9\

配置環境變量

右鍵計算機->屬性->高級系統設置->環境變量,在系統變量區域,點擊新建,輸入變量名爲:GRADLE_HOME,變量值爲:D:\program\gradle-4.9\(根據實際情況)。找到Path,在原始內容基礎上加入%GRADLE_HOME%\bin;,必須以分號結束。

測試配置是否成功

打開一個新的cmd命令窗口或者powershell或者其他命令行工具(比如cmder),輸入命令gradle -v,如果出現類似下面的消息,則說明配置成功
這裏寫圖片描述

安裝elasticbak

下載elasticbak

用git 命令下載

git clone https://github.com/jiashiwen/elasticbak 

這裏寫圖片描述

進入安裝目錄

cd elasticbak

用gradle編譯

gradle clean build

注意此處有坑:由於gradle編譯時訪問的中央maven庫http://10.207.2.29:8081/repository/maven-public,在國內可能會導致編譯緩慢甚至失敗,本人就是失敗的那種!!
解決方法:找到gradle的配置文件路徑,例如Windows中的路徑爲C:\Users${你的用戶名}.gradle,新建一個文件名爲init.gradle,用記事本或者類似的編輯器打開,輸入以下內容:

allprojects{
  repositories {
    def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
      all { ArtifactRepository repo ->
        if(repo instanceof MavenArtifactRepository){
          def url = repo.url.toString()
          if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
            project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
            remove repo
          }
       }
    }
    maven {
      url REPOSITORY_URL
    }
  }
}

重試編譯
這裏把下載地址改爲阿里雲,然後編譯快得飛起!!

Gradle錯誤:編碼GBK的不可映射字符
在項目build.gradle下添加下面代碼




tasks.withType(JavaCompile) {  
    options.encoding = "UTF-8"  
} 

再次編譯
編譯結束後會看到build/libs/elastictbak-1.0.jar jar包,接下來就可以用這個jar包遷移數據了

數據備份

java -jar elasticbak-5.5.1.jar --exp --cluster weicluster --host 10.3.69.137 --filesize 1000 --backupdir ./esbackupset --backupindexes "*" --threads 4

注意,如果集羣中沒有索引,那麼備份目錄esbackupset不會創建的

數據恢復

java -jar elasticbak-5.5.1.jar  --imp  --cluster elasticsearch  --host 10.3.69.138  --restoreindex test1 --backupset esbackupset/test1  --metafile esbackupset/test1/test1.meta --threads 4

工具參數說明

  • –backupdir

    備份目錄,該目錄下生成索引備份集(以索引名稱命名的目錄),該備份集包括索引元數據備份文件(indexname.meta)和數據備份文件(indexname_num.data)
    Default: ./

  • –backupindexes

    備份索引。可以用’,’分割,支持通配符,如果備份集羣中有索引則用’”*”’,注意必須用雙引號

  • –backupset

    恢復索引時需要指定的備份集路徑

  • –cluster

    Elasticsearch 集羣名稱
    Default: elasticsearch

  • –exp

    備份模式,與–imp不同時出現
    Default: false

  • –filesize

    每個data文件的文檔數量,也是每次es批量去除數據的數量,默認 500
    Default: 500

  • –help

    Default: false

  • –host

    Elasticsearch cluster 中masterip地址,默認爲 ‘127.0.0.1’.
    Default: 127.0.0.1

  • –imp

    恢復模式 ,與–exp不同時出現
    Default: false

  • –metafile

    恢復索引時需要指定的meta文件,用於重建索引setting、mapping
    Default:

  • –port

    Elasticsearch 端口,默認 9300
    Default: 9300

  • –restoreindex

    需要恢復的索引名稱,可以與備份索引名稱不同

  • –threads

    併發線程數
    Default: 2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章