0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

3種常用的Elasticsearch數(shù)據(jù)遷移方案

馬哥Linux運(yùn)維 ? 來(lái)源:奇妙的Linux世界 ? 作者:奇妙的Linux世界 ? 2022-04-02 10:50 ? 次閱讀

如果準(zhǔn)備將自建的 elasticsearch 遷移上云,或者的遷移到其他es集群內(nèi),可以根據(jù)自己的業(yè)務(wù)需要選擇合適的遷移方案。如果業(yè)務(wù)可以停服或者可以暫停寫(xiě)操作,可以使用以下幾種方式進(jìn)行數(shù)據(jù)遷移:

  • COS 快照,即Cloud Object Storage
  • logstash
  • elasticsearch-dump

各種遷移方式的對(duì)比如下:

遷移方式 適用場(chǎng)景
COS 快照 數(shù)據(jù)量大的場(chǎng)景(GB、TB、PB 級(jí)別)對(duì)遷移速度要求較高的場(chǎng)景
logstash 遷移全量增量數(shù)據(jù),且對(duì)實(shí)時(shí)性要求不高的場(chǎng)景需要對(duì)遷移的數(shù)據(jù)通過(guò) es query 進(jìn)行簡(jiǎn)單的過(guò)濾的場(chǎng)景需要對(duì)遷移的數(shù)據(jù)進(jìn)行復(fù)雜的過(guò)濾或處理的場(chǎng)景版本跨度較大的數(shù)據(jù)遷移場(chǎng)景,如 5.x 版本遷移到 6.x 版本或 7.x 版本
elasticsearch-dump 數(shù)據(jù)量較小的場(chǎng)景

1COS 快照

基于 COS 快照的遷移方式是使用 ES 的snapshot api接口進(jìn)行遷移,基本原理就是從源 ES 集群創(chuàng)建索引快照,然后在目標(biāo) ES 集群中進(jìn)行恢復(fù)。通過(guò) snapshot 方式進(jìn)行數(shù)據(jù)遷移時(shí),特別需要注意 ES 的版本問(wèn)題:

目標(biāo) ES 集群的主版本號(hào)(如5.6.4中的5為主版本號(hào))要大于等于源 ES 集群的主版本號(hào)。
1.x 版本的集群創(chuàng)建的快照不能在 5.x 版本中恢復(fù)。

在源 ES 集群中創(chuàng)建 repository

創(chuàng)建快照前必須先創(chuàng)建 repository 倉(cāng)庫(kù),一個(gè) repository 倉(cāng)庫(kù)可以包含多份快照文件,repository 主要有以下幾種類(lèi)型。

  • fs:共享文件系統(tǒng),將快照文件存放于文件系統(tǒng)中。
  • url:指定文件系統(tǒng)的 URL 路徑,支持協(xié)議:http、https、ftp、file、jar。
  • s3:AWS S3 對(duì)象存儲(chǔ),快照存放于 S3 中,以插件形式支持,安裝該插件請(qǐng)參考repository-s3[1]。
  • hdfs:快照存放于 hdfs 中,以插件形式支持,安裝該插件請(qǐng)參考repository-hdfs[2]。
  • cos:快照存放于騰訊云COS對(duì)象存儲(chǔ)中,以插件形式支持,安裝該插件請(qǐng)參考cos-repository[3]。

如果需要從自建 ES 集群遷移至騰訊云的 ES 集群,可以直接使用 COS 類(lèi)型倉(cāng)庫(kù)。但需要先在自建 ES 集群上安裝 cos-repository 插件(安裝插件后需要重啟集群才能使用),先把自建 ES 集群中的數(shù)據(jù)先備份到 COS,然后在騰訊云上的 ES 集群中恢復(fù)出來(lái),以完成數(shù)據(jù)的遷移。

如果自建 ES 的集群不方便安裝 cos-repository 插件,但是已經(jīng)安裝 repository-s3 或者 repository-hdfs 插件,則可以先把數(shù)據(jù)備份到 S3 或者 HDFS 中,然后把 S3 或者 HDFS 中備份好的文件上傳到騰訊云 COS 中,之后在騰訊云上的集群中進(jìn)行恢復(fù)。

通過(guò) COS 快照進(jìn)行數(shù)據(jù)遷移時(shí),需要先創(chuàng)建 COS 倉(cāng)庫(kù),您可以通過(guò)如下命令創(chuàng)建倉(cāng)庫(kù):

PUT _snapshot/my_cos_backup
{
    "type": "cos",
    "settings": {
        "app_id": "xxxxxxx",
        "access_key_id": "xxxxxx",
        "access_key_secret": "xxxxxxx",
        "bucket": "xxxxxx",
        "region": "ap-guangzhou",
        "compress": true,
        "chunk_size": "500mb",
        "base_path": "/"
    }
}
  • app_id:騰訊云賬號(hào) APPID。
  • access_key_id:騰訊云 API 密鑰 SecretId。
  • access_key_secret:騰訊云 API 密鑰 SecretKey。
  • bucket:COS Bucket 名字,不帶 appId 后綴的 bucket 名。
  • region:COS Bucket 地域,必須與 ES 集群同地域。
  • base_path:備份目錄。

在源 ES 集群中創(chuàng)建 snapshot

調(diào)用 snapshot api 創(chuàng)建快照以備份索引數(shù)據(jù),創(chuàng)建快照時(shí)可以指定只對(duì)部分索引進(jìn)行備份,也可以備份所有的索引,具體的 api 接口參數(shù)可以查閱 官方文檔。

備份所有索引

將源 ES 集群中的所有索引備份到my_cos_backup倉(cāng)庫(kù)下,并命名為snapshot_1

PUT _snapshot/my_cos_backup/snapshot_1

這個(gè)命令會(huì)立刻返回,并在后臺(tái)異步執(zhí)行直到結(jié)束。如果希望創(chuàng)建快照命令阻塞執(zhí)行,可以添加wait_for_completion參數(shù):

PUT _snapshot/my_cos_backup/snapshot_1?wait_for_completion=true

命令執(zhí)行的時(shí)間與索引大小相關(guān)。

備份指定索引

您可以在創(chuàng)建快照的時(shí)候指定要備份的索引:

PUT _snapshot/my_cos_backup/snapshot_2
{
    "indices": "index_1,index_2"
}

參數(shù) indices 的值為多個(gè)索引的時(shí)候,需要用,隔開(kāi)且不能有空格。

查看快照狀態(tài)

通過(guò)以下命令檢查快照是否備份完成,返回結(jié)果中的state字段為SUCCESS則說(shuō)明快照已經(jīng)備份成功:

GET _snapshot/my_cos_backup/snapshot_1

在目標(biāo) ES 集群中創(chuàng)建 repository

在目標(biāo) ES 集群中創(chuàng)建倉(cāng)庫(kù)和在源 ES 集群中創(chuàng)建倉(cāng)庫(kù)完全相同。

從快照恢復(fù)

將快照中備份的所有索引都恢復(fù)到 ES 集群中:

POST _snapshot/my_cos_backup/snapshot_1/_restore

如果 snapshot_1 包括5個(gè)索引,則這5個(gè)索引都會(huì)被恢復(fù)到 ES 集群中。您還可以使用附加的選項(xiàng)對(duì)索引進(jìn)行重命名。該選項(xiàng)允許您通過(guò)模式匹配索引名稱(chēng),并通過(guò)恢復(fù)進(jìn)程提供一個(gè)新名稱(chēng)。如果您想在不替換現(xiàn)有數(shù)據(jù)的前提下,恢復(fù)舊數(shù)據(jù)來(lái)驗(yàn)證內(nèi)容或進(jìn)行其他操作,則可以使用該選項(xiàng)。從快照里恢復(fù)單個(gè)索引并提供一個(gè)替換的名稱(chēng):

POST /_snapshot/my_cos_backup/snapshot_1/_restore
{
    "indices": "index_1",
    "rename_pattern": "index_(.+)",
    "rename_replacement": "restored_index_$1"
}
  • indices:只恢復(fù) index_1 索引,忽略快照中存在的其他索引。
  • rename_pattern:查找所提供的模式能匹配上的正在恢復(fù)的索引。
  • rename_replacement:將匹配的索引重命名成替代的模式。

查看索引恢復(fù)狀態(tài)

您可以通過(guò)調(diào)用_recoveryAPI,查看指定索引恢復(fù)的進(jìn)度:

GET index_1/_recovery

另外可以通過(guò)調(diào)用以下 API,查看指定索引的狀態(tài),返回結(jié)果中statusgreen,則說(shuō)明索引已經(jīng)完全恢復(fù):

GET _cluster/health/index_1

2logstash

logstash 支持從一個(gè) ES 集群中讀取數(shù)據(jù)然后寫(xiě)入到另一個(gè) ES 集群,因此可以使用 logstash 進(jìn)行數(shù)據(jù)遷移,使用 logstash 進(jìn)行遷移前,需要注意以下幾點(diǎn):

  • 需要在和騰訊云上的 ES 集群相同的 VPC 下創(chuàng)建 CVM,部署 logstash,同時(shí)保證該 CVM 能夠訪(fǎng)問(wèn)到源 ES 集群。
  • 用于部署 logstash 的 CVM 最好選擇比較高的配置,例如 CPU 為16核,內(nèi)存為32GB。
  • logstash 應(yīng)該和目標(biāo) ES 集群的主版本號(hào)相同,例如目標(biāo) ES 集群為6.8.2版本,則 logstash 也需要使用6.8版本。
  • 需要特別注意索引 type 的問(wèn)題,因?yàn)?ES 的不同版本對(duì)索引 type 的約束不同,跨大版本遷移 ES 集群時(shí)可能出現(xiàn)因?yàn)樗饕?type 而導(dǎo)致寫(xiě)入目標(biāo)集群失敗等的問(wèn)題。具體可參考 logstash-output-elasticsearch 插件中對(duì)document_type參數(shù)的說(shuō)明。

一個(gè)常用的使用 logstash 進(jìn)行跨集群數(shù)據(jù)遷移的配置文件如下:

input {
    elasticsearch {
        hosts => "1.1.1.1:9200"
        index => "*"
        docinfo => true
        size => 5000
        scroll => "5m"
      }
}

output {
    elasticsearch {
        hosts => ["http://2.2.2.2:9200"]
        user => "elastic"
        password => "your_password"
        index => "%{[@metadata][_index]}"
        document_type => "%{[@metadata][_type]}"
        document_id => "%{[@metadata][_id]}"
    }
}

上述配置文件將源 ES 集群的所有索引同步到目標(biāo)集群中,同時(shí)也可以設(shè)置只同步指定的索引,利用 logstash 進(jìn)行遷移的更多功能可查閱 logstash-input-elasticsearch 和logstash-output-elasticsearch[4]。

3elasticsearch-dump

elasticsearch-dump 是一款開(kāi)源的 ES 數(shù)據(jù)遷移工具,github 地址[5]。

  1. 安裝 elasticsearch-dump

    elasticsearch-dump 使用 node.js 開(kāi)發(fā),可使用 npm 包管理工具直接安裝:

    npminstallelasticdump-g
    
  2. 主要參數(shù)說(shuō)明

    --input:源地址,可為 ES 集群 URL、文件或 stdin,可指定索引,格式為:{protocol}://{host}:{port}/{index}
    --input-index:源ES集群中的索引
    --output:目標(biāo)地址,可為 ES 集群地址 URL、文件或 stdout,可指定索引,格式為:{protocol}://{host}:{port}/{index}
    --output-index:目標(biāo)ES集群的索引
    --type:遷移類(lèi)型,默認(rèn)為data,表明只遷移數(shù)據(jù),可選settings,analyzer,data,mapping,alias
    
  3. 如果集群有安全認(rèn)證,可以參照下面的方法使用 reindex 集群鑒權(quán)。在對(duì)應(yīng)的 http 后面,添加 user:password@ 參考樣例elasticsearch-dump --input=http://192.168.1.2:9200/my_index --output=http://user:password@192.168.1.2:9200/my_index --type=data

  4. 遷移單個(gè)索引

    以下操作通過(guò) elasticdump 命令將集群172.16.0.39中的 companydatabase 索引遷移至集群172.16.0.20。

    第一條命令先將索引的 settings 先遷移,如果直接遷移 mapping 或者 data 將失去原有集群中索引的配置信息如分片數(shù)量和副本數(shù)量等,當(dāng)然也可以直接在目標(biāo)集群中將索引創(chuàng)建完畢后再同步 mapping 與 data。

    elasticdump--input=http://172.16.0.39:9200/companydatabase--output=http://172.16.0.20:9200/companydatabase--type=settings
    elasticdump--input=http://172.16.0.39:9200/companydatabase--output=http://172.16.0.20:9200/companydatabase--type=mapping
    elasticdump--input=http://172.16.0.39:9200/companydatabase--output=http://172.16.0.20:9200/companydatabase--type=data
    
  5. 遷移所有索引

    以下操作通過(guò) elasticdump 命令將集群172.16.0.39中的所有索引遷移至集群172.16.0.20。

    此操作并不能遷移索引的配置,例如分片數(shù)量和副本數(shù)量,必須對(duì)每個(gè)索引單獨(dú)進(jìn)行配置的遷移,或者直接在目標(biāo)集群中將索引創(chuàng)建完畢后再遷移數(shù)據(jù)。

    elasticdump--input=http://172.16.0.39:9200--output=http://172.16.0.20:9200
    

4總結(jié)

  1. elasticsearch-dump 和 logstash 做跨集群數(shù)據(jù)遷移時(shí),都要求用于執(zhí)行遷移任務(wù)的機(jī)器可以同時(shí)訪(fǎng)問(wèn)到兩個(gè)集群,因?yàn)?a href="http://ttokpm.com/v/tag/1722/" target="_blank">網(wǎng)絡(luò)無(wú)法連通的情況下就無(wú)法實(shí)現(xiàn)遷移。而使用 snapshot 的方式則沒(méi)有這個(gè)限制,因?yàn)?snapshot 方式是完全離線(xiàn)的。因此 elasticsearch-dump 和 logstash 遷移方式更適合于源 ES 集群和目標(biāo) ES 集群處于同一網(wǎng)絡(luò)的情況下進(jìn)行遷移。而需要跨云廠商的遷移,可以選擇使用 snapshot 的方式進(jìn)行遷移,例如從阿里云 ES 集群遷移至騰訊云 ES 集群,也可以通過(guò)打通網(wǎng)絡(luò)實(shí)現(xiàn)集群互通,但是成本較高。
  2. elasticsearch-dump 工具和 MySQL 數(shù)據(jù)庫(kù)用于做數(shù)據(jù)備份的工具 mysqldump 類(lèi)似,都是邏輯備份,需要將數(shù)據(jù)一條一條導(dǎo)出后再執(zhí)行導(dǎo)入,所以適合數(shù)據(jù)量小的場(chǎng)景下進(jìn)行遷移。
  3. snapshot 的方式適合數(shù)據(jù)量大的場(chǎng)景下進(jìn)行遷移。

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)遷移
    +關(guān)注

    關(guān)注

    0

    文章

    66

    瀏覽量

    6929
  • Elasticsearch
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    2813

原文標(biāo)題:3 種常用的 Elasticsearch 數(shù)據(jù)遷移方案

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    向CC2651R3和CC2651P3的硬件遷移

    電子發(fā)燒友網(wǎng)站提供《向CC2651R3和CC2651P3的硬件遷移.pdf》資料免費(fèi)下載
    發(fā)表于 09-26 11:03 ?0次下載
    向CC2651R<b class='flag-5'>3</b>和CC2651P<b class='flag-5'>3</b>的硬件<b class='flag-5'>遷移</b>

    龍智Atlassian ITSM解決方案、云遷移解決方案詳解:高速I(mǎi)TSM實(shí)施+端到端的云遷移服務(wù)

    隨著云計(jì)算技術(shù)的不斷成熟與普及,企業(yè)對(duì)于高效、靈活的IT服務(wù)管理(ITSM)與無(wú)縫的云遷移解決方案的需求日益增長(zhǎng)。如何有效管理復(fù)雜的IT環(huán)境,加速業(yè)務(wù)上云進(jìn)程,已成為眾多企業(yè)實(shí)現(xiàn)數(shù)字化轉(zhuǎn)型、提升
    的頭像 發(fā)表于 09-04 09:41 ?144次閱讀
    龍智Atlassian ITSM解決<b class='flag-5'>方案</b>、云<b class='flag-5'>遷移解決方案</b>詳解:高速I(mǎi)TSM實(shí)施+端到端的云<b class='flag-5'>遷移</b>服務(wù)

    統(tǒng)一日志數(shù)據(jù)流圖

    統(tǒng)一日志數(shù)據(jù)流圖 日志系統(tǒng)數(shù)據(jù)流圖 系統(tǒng)進(jìn)行日志收集的過(guò)程可以分為三個(gè)環(huán)節(jié): (1)日志收集和導(dǎo)入ElasticSearch (2)ElasticSearch進(jìn)行索引等處理 (
    的頭像 發(fā)表于 08-21 15:00 ?187次閱讀
    統(tǒng)一日志<b class='flag-5'>數(shù)據(jù)</b>流圖

    HBase集群數(shù)據(jù)在線(xiàn)遷移方案探索

    下線(xiàn)這個(gè)HBase集群。由于這個(gè)集群目前仍在線(xiàn)上讀寫(xiě),本文從原理和實(shí)踐的角度探索對(duì)HBase集群數(shù)據(jù)的在線(xiàn)遷移方案,歡迎大家補(bǔ)充。 二、基礎(chǔ)理論梳理 HBase整體架構(gòu) 重溫一下各個(gè)模塊的職責(zé)
    的頭像 發(fā)表于 06-12 11:54 ?1073次閱讀
    HBase集群<b class='flag-5'>數(shù)據(jù)</b>在線(xiàn)<b class='flag-5'>遷移</b><b class='flag-5'>方案</b>探索

    隔絕銀遷移的超長(zhǎng)壽命輕觸開(kāi)關(guān)

    隔絕銀遷移的輕觸開(kāi)關(guān)
    的頭像 發(fā)表于 04-09 14:40 ?245次閱讀

    鴻蒙OS 跨設(shè)備遷移

    的 Page 請(qǐng)求遷移。 HarmonyOS 處理遷移任務(wù),并回調(diào)設(shè)備 A 上 Page 的保存數(shù)據(jù)方法,用于保存遷移必須的數(shù)據(jù)。 Harm
    的頭像 發(fā)表于 01-31 15:47 ?1026次閱讀

    一分鐘,自動(dòng)完成Redis數(shù)據(jù)遷移

    NineData提供了高效、安全的Redis不停機(jī)數(shù)據(jù)遷移方案。與傳統(tǒng)遷移方案相比,NineData具備簡(jiǎn)單易用、強(qiáng)勁性能和高可靠性的優(yōu)勢(shì)。
    的頭像 發(fā)表于 01-08 11:34 ?352次閱讀
    一分鐘,自動(dòng)完成Redis<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>遷移</b>

    還在為數(shù)據(jù)庫(kù)遷移煩惱?五高效方案幫你解決!

    數(shù)據(jù)庫(kù)遷移是許多企業(yè)在數(shù)字化轉(zhuǎn)型過(guò)程中不可避免的任務(wù)。然而,面對(duì)市面上眾多的數(shù)據(jù)庫(kù)遷移工具,我們可能會(huì)陷入糾結(jié)。今天,我將介紹五常見(jiàn)的
    的頭像 發(fā)表于 12-06 17:05 ?4049次閱讀
    還在為<b class='flag-5'>數(shù)據(jù)</b>庫(kù)<b class='flag-5'>遷移</b>煩惱?五<b class='flag-5'>種</b>高效<b class='flag-5'>方案</b>幫你解決!

    navicat的數(shù)據(jù)遷移工具

    數(shù)據(jù)遷移是當(dāng)今數(shù)據(jù)管理的核心任務(wù)之一。在數(shù)據(jù)遷移的過(guò)程中,我們經(jīng)常面臨著數(shù)據(jù)庫(kù)結(jié)構(gòu)不同和
    的頭像 發(fā)表于 11-21 10:55 ?878次閱讀

    源譯識(shí) | 譯文分享:Elasticsearch訴Amazon商標(biāo)侵權(quán)案

    【編者按】 ElasticSearch是歸屬Elastic公司的一個(gè)開(kāi)源項(xiàng)目,提供分布式、高擴(kuò)展、高實(shí)時(shí)的搜索與數(shù)據(jù)分析引擎。Amazon公司于2015年基于ElasticSearch推出了自己
    的頭像 發(fā)表于 11-06 19:10 ?604次閱讀

    如何將數(shù)據(jù)從MySQL遷移到Influxdb中

    如果以前是將時(shí)序數(shù)據(jù)存放在MySQL,現(xiàn)在為了獲取更好的性能和使用可視化工具,我們需要將數(shù)據(jù)從MySQL遷移到Influxdb中。 這看起來(lái)是一個(gè)常見(jiàn)場(chǎng)景,經(jīng)過(guò)一番查閱,發(fā)現(xiàn)了
    的頭像 發(fā)表于 11-02 10:54 ?1030次閱讀

    Python 更新 Elasticsearch 的幾種方法

    今天總結(jié)一下通過(guò) Python 更新 Elasticsearch 數(shù)據(jù)的幾個(gè)方法 Elasticsearch 是一個(gè)實(shí)時(shí)的分布式搜索分析引擎,它能讓你以前所未有的速度和規(guī)模,去探索你的數(shù)據(jù)
    的頭像 發(fā)表于 11-01 10:11 ?994次閱讀
    Python 更新 <b class='flag-5'>Elasticsearch</b> 的幾種方法

    SpringBoot 連接ElasticSearch的使用方式

    在上篇 ElasticSearch 文章中,我們?cè)敿?xì)的介紹了 ElasticSearch 的各種 api 使用。 實(shí)際的項(xiàng)目開(kāi)發(fā)過(guò)程中,我們通?;谀承┲髁骺蚣芷脚_(tái)進(jìn)行技術(shù)開(kāi)發(fā),比如
    的頭像 發(fā)表于 10-09 10:35 ?681次閱讀

    Elasticsearch存在的各種漏洞問(wèn)題

    elasticsearch 8 之前使用的一個(gè)老系統(tǒng)使用了elasticsearch7.x版本,之后又反應(yīng)es版本存在各種漏洞 無(wú)奈只能做版本升級(jí)來(lái)解決問(wèn)題,計(jì)劃是將版本升級(jí)到8.x,在網(wǎng)上了解了下
    的頭像 發(fā)表于 09-30 10:40 ?3020次閱讀
    <b class='flag-5'>Elasticsearch</b>存在的各種漏洞問(wèn)題