基于linux:利用elasticdump工具编写es集群的定时备份脚本(包含mapping和data)

基于linux:利用elasticdump工具编写es集群的定时备份脚本(包含mapping和data)

注:本脚本需要基于elasticdump工具,没有安装部署的伙伴可以看我博客稍微了解一下基础操作
链接附上http://t.csdn.cn/Pnb8c

es集群备份脚本编写及调度,保留最近七天。

vim es_backup.sh

#!/bin/bash
. /etc/profile
. ~/.bash_profile
# Elasticsearch服务器信息
host="你的服务器IP:9200"
#备份es索引列表,多个索引用空格分开。
dbs="my_index1 my_index2 my_index3 my_index4"
#备份的路径
backuppath=/opt/module/data/backup/es
#当前的时间作为文件名
backupname=es_$(date '+%Y-%m-%d%H:%M:%S')
day=7   #保留最近7天的备份
#判断备份目录是否存在,不存时新建目录。
[ ! -d $backupname ] &&mkdir -p $backuppath  
cd $backuppath  
echo "==========开始es的备份==========="
echo "备份的路径是 $backuppath/$backupname.tar.gz"
for db in $dbs
do 
   #备份单个es数据索引为*_mapping.json文件。
   elasticdump --input=http://$host/$db --output=${backupname}_${db}_mapping.json --type=mapping
   #$? 得到上一个shell命令的执行的返回值。0表示执行成功。其他表示错误。并将将结果写入到日志中。
   if [ "$?" == "0" ]  
   then
       echo $(date '+%Y-%m-%d %H:%M:%S')" $db_mapping  ${backupname}_${db} sucess" >>es.log 
   else
       echo $(date '+%Y-%m-%d %H:%M:%S')" $db_mapping  elasticdump failed" >>es.log
      exit 0
   fi
   #备份单个es数据索引为*_data.json文件。
   elasticdump --input=http://$host/$db --output=${backupname}_${db}_data.json --type=data
   #$? 得到上一个shell命令的执行的返回值。0表示执行成功。其他表示错误。并将将结果写入到日志中。
   if [ "$?" == "0" ]  
   then
       echo $(date '+%Y-%m-%d %H:%M:%S')" $db_data  ${backupname}_${db} sucess" >>es.log 
   else
       echo $(date '+%Y-%m-%d %H:%M:%S')" $db_data  elasticdump failed" >>es.log
      exit 0
   fi
   
done
#压缩所有json文件
tar -czf ${backupname}.tar.gz *.json --force-local
if [ "$?" == "0" ]
then
   echo $(date '+%Y-%m-%d %H:%M:%S')" tar sucess">>es.log
else
   echo $(date '+%Y-%m-%d %H:%M:%S')" tar failed">>es.log
   exit 0
fi
rm -f *.json  #删除所有的sql文件
delname=es_$(date -d "$day day ago" '+%Y-%m-%d')*  #得到要删除的太旧的备份的名字。
rm -f $delname  #删除文件。
if [ "$?" == "0" ]
then
   echo $(date '+%Y-%m-%d')" rm sucess">>es.log
else
   echo $(date '+%Y-%m-%d')" rm failed">>es.log
   exit 0
fi
echo "==========备份完成==========="

给脚本权限:chmod 744 ./es_backup.sh

2.创建定时调度任务

每天0:00开始备份。

crontab -e
0 */24 * * * /你的es_backup.sh所在地址/es_backup.sh >> /将日志写到的地址/crontab.log 2>&1
重启crontab服务

sudo systemctl restart crond.service

*注意:上面可以做五分钟一次的定时调度任务测试,测试任务成功后改为每天0:00备份。

3.4.查看日志,查看备份的内容

测试备份:删除之前的测试索引,解压压缩文件,利用备份内容恢复索引。
利用elasticdump导出索引和数据具体操作可以查看我之前的博客。
链接附上:https://blog.csdn.net/Liu__sir__/article/details/129793951
不懂的地方请留言或者私信我。

你可能感兴趣的:(运维工作,linux,elasticsearch,运维)