基于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
不懂的地方请留言或者私信我。