如何进入网站开发后台,北京网站建设公司文字排版,网站建设包含那些 内容,苏州保洁公司哪家好1#xff09;Elasticsearch的snapshot快照备份优点#xff1a;通过snapshot拍摄快照#xff0c;然后定义快照备份策略#xff0c;能够实现快照自动化存储#xff0c;可以定义各种策略来满足自己不同的备份
缺点#xff1a;还原不够灵活#xff0c;拍摄快照进行备份很快Elasticsearch的snapshot快照备份优点通过snapshot拍摄快照然后定义快照备份策略能够实现快照自动化存储可以定义各种策略来满足自己不同的备份
缺点还原不够灵活拍摄快照进行备份很快但是还原的时候没办法随意进行还原类似虚拟机快照
1、配置备份目录
在 elasticsearch.yml 的配置文件中注明可以用作备份路径 path.repo 如下所示
path.repo: [/mount/backups, /mount/longterm_backups]
配置好后就可以使用 snapshot api 来创建一个 repository 了如下我们创建一个名为 my_backup 的 repository。
PUT /_snapshot/my_backup { type: fs, settings: { location: /mount/backups/my_backup } }
2、开始通过API接口备份
有了 repostiroy 后我们就可以做备份了也叫快照也就是记录当下数据的状态。如下所示我们创建一个名为 snapshot_1 的快照。
PUT /_snapshot/my_backup/snapshot_1?wait_for_completiontrue
【温馨提示】wait_for_completion 为 true 是指该 api 在备份执行完毕后再返回结果否则默认是异步执行的我们这里为了立刻看到效果所以设置了该参数线上执行时不用设置该参数让其在后台异步执行即可。
3、增量备份
PUT /_snapshot/my_backup/snapshot_2?wait_for_completiontrue
当执行完毕后你会发现 /mount/backups/my_backup 体积变大了。这说明新数据备份进来了。要说明的一点是当你在同一个 repository 中做多次 snapshot 时elasticsearch 会检查要备份的数据 segment 文件是否有变化如果没有变化则不处理否则只会把发生变化的 segment file 备份下来。这其实就实现了增量备份。
4、数据恢复
通过调用如下 api 即可快速实现恢复功能
POST /_snapshot/my_backup/snapshot_1/_restore?wait_for_completiontrue { indices: index_1, rename_replacement: restored_index_1 }
2elasticdump备份迁移es数据
索引数据导出为文件备份
# 导出索引Mapping数据 elasticdump \ --inputhttp://es实例IP:9200/index_name/index_type \ --output/data/my_index_mapping.json \ # 存放目录 --typemapping # 导出索引数据 elasticdump \ --inputhttp://es实例IP:9200/index_name/index_type \ --output/data/my_index.json \ --typedata
索引数据文件导入至索引恢复
# Mapping 数据导入至索引 elasticdump \ --outputhttp://es实例IP:9200/index_name \ --input/home/indexdata/roll_vote_mapping.json \ # 导入数据目录 --typemapping # ES文档数据导入至索引 elasticdump \ --outputhttp:///es实例IP:9200/index_name \ --input/home/indexdata/roll_vote.json \ --typedata
可直接将备份数据导入另一个es集群
elasticdump --inputhttp://127.0.0.1:9200/test_event --outputhttp://127.0.0.2:9200/test_event --typedata
type类型
type是ES数据导出导入类型Elasticdump工具支持以下数据类型type类型 说明
mapping ES的索引映射结构数据
data ES的数据
settings ES的索引库默认配置
analyzer ES的分词器
template ES的模板结构数据
alias ES的索引别名3esm备份迁移es数据
备份es数据
esm -s http://10.33.8.103:9201 -x petition_data -b 5 --count5000 --sliced_scroll_size10 --refresh -o./es_backup.bin
-w 表示线程数
-b 表示一次bulk请求数据大小单位MB默认 5M
-c 一次scroll请求数量
导入恢复es数据
esm -d http://172.16.20.20:9201 -y petition_data6 -c 5000 -b 5 --refresh -i./dump.bin
https://zhuanlan.zhihu.com/p/540189644 https://www.cnblogs.com/windysai/p/14400830.html
#!/bin/bash#db_backups_conf.txt文件路径
db_backups_conf/home/ljy/scripts/elasticsearch_backup_config.txtbase_path/backup/elkdata
mv_elk_bath/backup/elkmvdata#本机只保留最近3天快照
find ${mv_elk_bath}/ -type f -mtime 2 -exec rm -rf {} \; /dev/null 21##先把原来的挪走
# 获取前一天的年月日
ydate %Y -d -1day
ymdate %Y%m -d -1day
ddate %d -d -1dayif [ ! -d ${mv_elk_bath}/${y}/${ym}/${d} ];
thenmkdir -p ${mv_elk_bath}/${y}/${ym}/${d}scp -rp ${base_path}/* ${mv_elk_bath}/${y}/${ym}/${d}/
fi#判断配置信息文件是否存在
if [ -f ${db_backups_conf} ];thenecho $(date %Y-%m-%d %H:%M:%S) 发现备份文件配置信息文件存在#获取等号前内容作为map中的Key值dbArrOne($(awk -F[] {print $1} ${db_backups_conf} ))#获取等号后内容作为map中的value值dbArrTwo($(awk -F[] {print $2} ${db_backups_conf}))#创建一个空mapdeclare -A map()#通过循环将db_backups_conf配置文件中的信息存储在map中for((i0;i${#dbArrOne[]};i))domap[${dbArrOne[i]}]${dbArrTwo[i]}done#获取要备份的索引名称的字符串indexNames${map[indexNames]}#获取默认的字符串分隔符old_ifs$IFS#设置字符串分隔符为逗号IFS,#将要备份的索引名称value值的字符串进行分隔获取一个数组indexNamesArr($indexNames)#将字符串的分隔符重新设置为默认的分隔符IFS$old_ifs#获取当前年月日saveday$(date %Y%m%d)#获取超出备份天数的年月日delday$(date -d ${map[backupsFileDay]} days ago %Y%m%d)#执行命令备份es数据{#检测es访问地址是否有效esStatus$(curl -s -m 5 -IL http://${map[ipAddress]}:${map[portNumber]}|grep 200)if [ $esStatus ! ];thenecho $(date %Y-%m-%d %H:%M:%S) es地址访问正常http://${map[ipAddress]}:${map[portNumber]},开始备份数据#遍历备份索引名称逐个删除旧备份重新全量备份for indexName in ${indexNamesArr[]};doecho $indexName;##逐个判断索引是否存在indexStatus$(curl -s -m 5 -IL http://${map[ipAddress]}:${map[portNumber]}/${indexName}|grep 200)if [ $indexStatus ! ];then#先备份然后再删除旧备份if [ ${map[backupBeforeDelete]} yes ];thenecho $(date %Y-%m-%d %H:%M:%S) 开始同步备份索引${indexName}_backup_${saveday}curl -XPUT 127.0.0.1:9500/_snapshot/elk_backup/${indexName}_backup_${saveday}?wait_for_completiontrue -d {indices:${indexName}}echo $(date %Y-%m-%d %H:%M:%S) 完成同步备份索引${indexName}_backup_${saveday}#删除旧备份echo $(date %Y-%m-%d %H:%M:%S) 开始删除备份索引${indexName}_backup_${delday}curl -XDELETE 127.0.0.1:9500/_snapshot/elk_backup/${indexName}_backup_${delday}echo $(date %Y-%m-%d %H:%M:%S) 完成删除备份索引${indexName}_backup_${delday}fielseecho $(date %Y-%m-%d %H:%M:%S) es中不能存在索引${indexName}fidonefi}
elseecho 文件不存在
fi备份到nas上的脚本 分每天和每月每月仅备份1个
#/bin/bash
#Date: 2020-08-02
#Script Name: elk_logs_bak
#备份elk快照数据到nas# 日志位置
base_path/backup/elkdatanas_bak/nasdir/elk_bak/day_bak
# 获取当前年信息和月信息
ym$(date %Y%m)
dydate %Y%m%d
ddate %d#按年月创建文件夹
if [ ! -d ${nas_bak}/${ym}/${d} ];
thensudo mkdir -p ${nas_bak}/${ym}/${d}
fiscp -rp ${base_path}/* ${nas_bak}/${ym}/${d}/#每月备份最后一天数据
nasmonth_bak/nasdir/elk_bak/month_bak
lastdaydate -d$(date -d1 month %Y%m01) -1 day %d
thisdaydate %d
#保留一个月的最后一天日志
if [ $thisday lastday ];
thenmkdir -p ${nasmonth_bak}/${ym}/scp -rp ${nas_bak}/${ym}/${d}/* ${nasmonth_bak}/${ym}/
fifind ${nas_bak}/${ym}/ -type f -mtime 30 -exec rm -rf {} \; /dev/null 21