这两天在看ES数据备份方面的事情,因为我们ES集群的存储空间有限,需要定时对ES的数据进行备份和清理,把备份的数据存储到其他地方去,然后在ES集群中释放掉。
看大家好多是主要考虑数据的安全性才做的数据的备份,我们就比较low了,我们就是因硬盘不够,要删数据。上个项目是因为日志数据重要程度一般般,就保留了一个月的量,然后也没有做数据的备份转储。这次上线的项目要求就高点了,需要删除的数据存储到其他地方,但是硬盘的容量更低了。所以就需要做ES数据备份和转储,转储完了就清掉。
这里是用ES官方推荐的数据快照方案,这个方案可以完全通过ES API进行操作,比价方便、快捷,在数据恢复方面也是方便的。
先上ES官方的链接,大家看看:https://www.elastic.co/guide/e ... .html
然后就是步骤了:
执行过程分为两部分:
一、准备过程
1、添加ES备份存储目录
在集群的每台机器上进行目录创建
mkdir /home/esdata
2、挂载共享文件存储目录
在集群的每台机器上目录挂载
mount -t nfs 10.70.61.80:/home/apmtest /home/esdata
3、修改ES集群配置
在ES集群的每台机器上都添加path.repo属性
path.repo: ["/home/esdata"]
4、重启ES集群
ES集群重启必须是关闭所有机器后,再启动。
5、建立备份仓库
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "/home/esdata"
}
}
二、备份数据快照
1、通过API执行备份
PUT /_snapshot/my_backup/snapshot_2018.03.01?wait_for_completion=true
{
"indices": "filebeat-2018.03.01"
}
快照仓库需要注意的地方就是需要在整个集群的每一台机器上挂载相同的共享文件存储目录,保证在集群里做的操作是输出到相同的地方的。
下面来一份shell脚本,可以定时执行,是做ES数据的定时转储和清理的,大家可以借鉴一下
看大家好多是主要考虑数据的安全性才做的数据的备份,我们就比较low了,我们就是因硬盘不够,要删数据。上个项目是因为日志数据重要程度一般般,就保留了一个月的量,然后也没有做数据的备份转储。这次上线的项目要求就高点了,需要删除的数据存储到其他地方,但是硬盘的容量更低了。所以就需要做ES数据备份和转储,转储完了就清掉。
这里是用ES官方推荐的数据快照方案,这个方案可以完全通过ES API进行操作,比价方便、快捷,在数据恢复方面也是方便的。
先上ES官方的链接,大家看看:https://www.elastic.co/guide/e ... .html
然后就是步骤了:
执行过程分为两部分:
一、准备过程
1、添加ES备份存储目录
在集群的每台机器上进行目录创建
mkdir /home/esdata
2、挂载共享文件存储目录
在集群的每台机器上目录挂载
mount -t nfs 10.70.61.80:/home/apmtest /home/esdata
3、修改ES集群配置
在ES集群的每台机器上都添加path.repo属性
path.repo: ["/home/esdata"]
4、重启ES集群
ES集群重启必须是关闭所有机器后,再启动。
5、建立备份仓库
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "/home/esdata"
}
}
二、备份数据快照
1、通过API执行备份
PUT /_snapshot/my_backup/snapshot_2018.03.01?wait_for_completion=true
{
"indices": "filebeat-2018.03.01"
}
快照仓库需要注意的地方就是需要在整个集群的每一台机器上挂载相同的共享文件存储目录,保证在集群里做的操作是输出到相同的地方的。
下面来一份shell脚本,可以定时执行,是做ES数据的定时转储和清理的,大家可以借鉴一下
#!/bin/bash
ESIP=127.0.0.1
DATE=`date -d '-2 days' +'%Y.%m.%d'`
INDEX='{ "indices": "'$DATE'" }'
echo "begin to backup ES LOG..."
curl -XPUT "http://$ESIP:9200/_snapshot/my_backup/snapshot_$DATE?wait_for_completion=true" -d $INDEX
echo "----------------------------------------------------------------------------"
echo "begin to clean ES LOG..."
URL1="http://$ESIP:9200/filebeat-$DATE"
curl -XDELETE $URL1
echo "TRANSFER AND CLEAN ES LOG END!"
[尊重社区原创,转载请保留或注明出处]
本文地址:http://elasticsearch.cn/article/560
本文地址:http://elasticsearch.cn/article/560