Elasticsearch使用_snapshot進行備份和遷移
阿新 • • 發佈:2021-02-15
技術標籤: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