1. 程式人生 > 其它 >Elasticsearch使用_snapshot進行備份和遷移

Elasticsearch使用_snapshot進行備份和遷移

技術標籤:ELK開發elasticsearchlinuxdocker

說明

現在需要將Elasticsearch的資料遷移到新的服務上。

  • 單機使用官方的API完成
  • 叢集使用Logstash

備份操作

檢視舊版本的索引資訊

GET _cat/indices

在這裡插入圖片描述
可以把kibana的索引排除掉。

首先需要配置下路徑,我的是在docker中完成的,注意先建立資料夾,許可權也要修改

docker exec -it elasticsearch bash
mkdir /opt/backup
chown elasticsearch:root /opt/backup
vi /usr/share/elasticsearch/config/elasticsearch.yml
# 內容
path.repo: ["/opt/backup"]
#
exit
docker restart elasticsearch

建立備份的倉庫,需要和上面的路徑匹配(相同,子檔案等)

PUT _snapshot/my_backup 
{
    "type": "fs", 
    "settings": {
        "location": "/opt/backup/my_backup",
        "compress": true
    }
}

選擇需要備份的索引名稱,注意不要有空格

PUT _snapshot/my_backup/my_snapshot
{
    "indices"
: "goods_achievement,goods_require,goods_patent,patent_detail" }

檢視狀態

GET _snapshot/my_backup/my_snapshot/_status

在這裡插入圖片描述

資料匯出操作

從docker 匯出資料包

docker exec -it elasticsearch bash
zip -r my_backup.zip /opt/backup/*
exit
docker cp elasticsearch:/opt/backup/my_backup.zip /opt/
docker stop elasticsearch
docker stop kibana

資料轉移到新的伺服器上

scp /opt/my_backup.zip [email protected]:/opt/

完成備份的轉移

資料恢復

新的叢集沒有使用docker,但是需要之前一樣的操作。叢集的配置檔案都要修改。

mkdir /opt/backup
chown elasticsearch:root /opt/backup
vi /usr/share/elasticsearch-7.6.2/config/elasticsearch.yml
# 內容
path.repo: ["/opt/backup"]
#

建立倉庫

PUT _snapshot/my_backup 
{
    "type": "fs", 
    "settings": {
        "location": "/opt/backup/my_backup",
        "compress": true
    }
}

複製資料

unzip /opt/my_backup.zip -d /opt/backup
mv my_backup/ /opt/backup/

恢復資料

POST _snapshot/my_backup/my_snapshot/_restore

其他方式logstash

input {
    elasticsearch {
        hosts => ["http://172.18.63.211:9200"]
        index => "goods_achievement"
        size => 1000
        scroll => "5m"
        docinfo => true
    }
}
filter {
    mutate{
        remove_field => ["@timestamp", "@version"]
    }
}

output {
    elasticsearch {
        hosts => ["http://172.18.63.101:9200","http://172.18.63.102:9200","http://172.18.63.103:9200"]
        index => "%{[@metadata][_index]}"
        document_id => "%{[@metadata][_id]}"
        flush_size => 1000
        workers => 4
    }
}

在windows上執行

logstash.bat -f ../config/211to101es.conf