日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Elasticsearch索引备份与清理

發布時間:2023/12/15 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elasticsearch索引备份与清理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、背景

1.我們ES節點個數有限,而環境中日志量又非常龐大,久而久之ES的性能便會下降,所以要對以前的索引做定時清理。
2.ES副本提供了高可靠性,它們讓你可以容忍零星的節點丟失而不會中斷服務。但是,副本并不提供對災難性故障的保護。對這種情況,我們需要的是對集群真正的備份。

二、API

使用 snapshot API對集群做備份,一般有兩種方案:
1.增量備份:是默認的備份方案,即做快照時不指定索引,第一個快照會是一個數據的完整拷貝,后續的快照會保留的是已存快照和新數據之間的差異。
2.備份指定索引:某些日志并不需要長期保存,所以只對我們感興趣的索引做快照,一定程度上也能節省磁盤空間。

三、使用方法

本案例是針對指定索引進行備份

1.創建倉庫

(1) 掛載NFS共享存儲

$ df -hT
文件系統 類型 容量 已用 可用 已用% 掛載點
172.16.244.245:/logs/bjbpe01-es nfs 2.0T 1.3G 2.0T 1% /data/backup

注意:共享文件系統路徑必須確保集群所有節點都可以訪問到。所以我們三個節點都掛載同一個目錄。

(2) ES配置

集群每個節點elasticsearch.yml配置文件中添加如下配置,然后重啟服務。
path.repo: /data/backup

(3) 部署共享文件系統倉庫

#創建倉庫目錄 $ mkdir /data/backup/2019-02-28 #創建倉庫 $ curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_snapshot/2019-03-08 -d ' {"type": "fs","settings": {"location": "/data/backup/2019-03-08","max_snapshot_bytes_per_sec": "50mb","max_restore_bytes_per_sec": "50mb"} }' #2019-03-08 共享倉庫名稱 #“type”:”fs” 指定倉庫類型是一個共享文件系統 #“location”: “/data/backup” 指定掛載目錄 #“max_snapshot_bytes_per_sec" : "50mb" 控制快照存到倉庫時的限流情況,默認每秒20mb #"max_restore_bytes_per_sec" : "50mb" 控制從倉庫恢復數據時的限流情況,默認每秒20mb

注意:如果需要更新已有倉庫設置,請使用POST方式提交,例如我們要將限流都改為每秒60mb

$ curl -H "Content-Type: application/json" -XPOST http://127.0.0.1:9200/_snapshot/2019-03-08 -d ' {"type": "fs","settings": {"location": "/data/backup/2019-03-08","max_snapshot_bytes_per_sec": "60mb","max_restore_bytes_per_sec": "60mb"} }'

2.備份指定索引

$ curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_snapshot/2019-03-08/logstash-audit_log-2019-03-08?wait_for_completion=true -d ' {"indices": "logstash-audit_log-2019-03-08" }' #logstash-audit_log-2019-03-08快照名稱 #wait_for_completion 默認快照時會進入后臺執行,添加該標記可以阻止進入后臺執行,常在腳本中使用。 #"indices" 指定要做快照的索引

3.刪除指定索引

curl -XDELETE http://127.0.0.1:9200/ logstash-audit_log-2019-02-08

四、附錄

其他的常用命令

#列出倉庫 curl -XGET http://127.0.0.1:9200/_snapshot/* #刪除倉庫 curl -XDELETE http://127.0.0.1:9200/_snapshot/2019-03-08 #列出快照 curl -XGET http://127.0.0.1:9200/_snapshot/2019-03-08/* #刪除快照 curl -XDELETE http://127.0.0.1:9200/_snapshot/2019-03-08/logstash-audit_log-2019-03-08

這里提供一個簡單的腳本,用于備份昨天的數據并清理一個月前的數據

#!/bin/bash #共享存儲目錄 NFS_DIR=/data/backup #獲取昨天日期(備份使用) DATE_YESTERDAY=`date -d "-1 day" +%Y-%m-%d` #獲取一個月前日期(索引刪除使用) DATE_MONTH_AGO=`date -d "1 month ago" +%Y-%m-%d` #要做快照的索引名稱 INDEX=(index1 index2 index3)echo "開始時間:`date +%Y-%m-%d_%H:%m:%S`" #--------------創建倉庫-------------- if [[ ! -d ${NFS_DIR}/${DATE_YESTERDAY} ]];thenmkdir -p ${NFS_DIR}/${DATE_YESTERDAY} fi curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_snapshot/${DATE_YESTERDAY} -d ' {"type": "fs","settings": {"location": "'${NFS_DIR}'/'${DATE_YESTERDAY}'","max_snapshot_bytes_per_sec": "50mb","max_restore_bytes_per_sec": "50mb"} }' if [[ $? == 0 ]];thenecho "${DATE_YESTERDAY}倉庫創建成功!" fi #--------------數據處理-------------- for i in ${INDEX[@]} do #創建快照,備份昨天的數據 curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_snapshot/${DATE_YESTERDAY}/${i}-${DATE_YESTERDAY}?wait_for_completion=true -d ' {"indices": "'${i}'-'${DATE_YESTERDAY}'" }' if [[ $? == 0 ]];thenecho "${i}-${DATE_YESTERDAY}快照創建成功!" fi #刪除一個月前數據 curl -XGET "http://127.0.0.1:9200/_cat/indices/?v"|grep ${i}-${DATE_MONTH_AGO} if [ $? == 0 ];thencurl -XDELETE "http://127.0.0.1:9200/${i}-${DATE_MONTH_AGO}"echo "${i}-${DATE_MONTH_AGO}索引刪除成功!" elseecho "${i}-${DATE_MONTH_AGO}索引不存在!" fi done #--------------快照數據做壓縮處理-------------- cd ${NFS_DIR} tar czvf ${DATE_YESTERDAY}.tgz ${DATE_YESTERDAY} rm -rf ${DATE_YESTERDAY} cd - echo "結束時間:`date +%Y-%m-%d_%H:%m:%S`"

參考:官方文檔

轉載于:https://blog.51cto.com/fengjicheng/2360344

總結

以上是生活随笔為你收集整理的Elasticsearch索引备份与清理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。