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中类似下图的回显