部署在docker里面的es,定期对某些索引进行备份

1.调整Elasticsearch各节点的elasticsearch.yml配置

在elasticsearch.yml中新增一行配置:

path.repo: ["/usr/share/elasticsearch/data/nodes/0/indices"]

/usr/share/elasticsearch/data/nodes/0/indices 这个路径就是放数据的路径,根据自己的进行修改
例如我的:
在这里插入图片描述
配置完后重启ES

1)docker ps 获取到es的容器ID
2)docker restart 容器ID

2.创建备份目录

这里创建的backup

cd /usr/share/elasticsearch/data/nodes/0/indices
mkdir backup
chmod 777 backup

3.定时备份设置

随机选择一个ES节点,通过snapshot API创建仓库和部署备份任务

1)创建注册快照仓库

curl -H "Content-Type:application/json" -XPUT http://localhost:9200/_snapshot/backup --header 'Authorization: Basic Z32ehc22222222MjrrrTY=' -d '
{
"type": "fs",
"settings": {
"location": "backup"
}
}'

–header ‘Authorization: Basic Z32ehc22222222MjrrrTY=’ 这段是因为我的es是有加密的 需要用户名密码登陆 如果没有 可以把这个去掉
2)检查注册的仓库信息

curl -XGET http://localhost:9200/_snapshot/backup

3)为某些索引创建快照

curl -H "Content-Type:application/json" -XPUT http://localhost:9200/_snapshot/backup/snapshot_member --header 'Authorization: Basic Z32ehc22222222MjrrrTY=' -d '
{
"indices": "索引1的名字,索引2的名字,索引3的名字",
"ignore_unavailable": true,
"include_global_state": false
}'

3)创建备份脚本

vim backup.sh
#!/bin/bash
source /etc/profile

time=`date +%Y%m%d%H%M`
curl -XPUT http://ES容器IP:9200/_snapshot/backup/snapshot_$time --header 'Authorization: Basic Z32ehc22222222MjrrrTY='

4)定时任务

crontab -u root -e
* * * * * /bin/bash /var/lib/docker/volumes/elasticsearch-config/backup.sh >> /var/lib/docker/volumes/elast
icsearch-config/backup.log 2>&1

需要注意的是定时任务要写在容器外面,然后backup.sh是在容器里面创建的
但是执行的时候要找到对应在外面对应出的volume卷位置

然后如果备份成功一次 在backup.log中类似下图的回显
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值