elasticsearch数据定时备份
1.配置文件
进入elasticsearch-6.2.2\config文件下,修改elasticsearch.yml文件,末行添加:path.repo: [“D:/ERPHY/esbackup”],配置备份路径同时并在相应路径创建指定的文件夹
path.repo: D:/ERPHY/esbackup
2.建立备份仓库
- cmd命令
curl -XPUT "http://localhost:9200/_snapshot/backup" -H "Content-Type: application/json" -d "{"""type""": """fs""","""settings""":{"""location""":"""D:/ERPHY/esbackup/esbackupData""","""compress""": "true","""max_snapshot_bytes_per_sec""":"""50mb""","""max_restore_bytes_per_sec""":"""50mb"""}}"
- kibana-Dev Tools
PUT _snapshot/backup
{
"type": "fs", // 快照仓库的类型是文件系统类型(file system)
"settings": {
"location": "D:/ERPHY/esbackup/esbackupData", // 快照仓库的文件存储位置,这里是"data_bk"目录
"compress": true, // 启用压缩,这将减少快照文件的大小,但会增加CPU的使用
"max_snapshot_bytes_per_sec" : "50mb", // 快照创建时的最大带宽限制,这里是每秒50MB
"max_restore_bytes_per_sec" : "50mb" // 快照还原时的最大带宽限制,这里也是每秒50MB
}
}
意思是创建了一个名为backup的备份仓库。仓库存储目录为D:/ERPHY/esbackup/esbackupData
3.备份数据
- cmd命令
curl -XPUT "http://localhost:9200/_snapshot/backup/snapshot_1?wait_for_completion=true"
- kibana-Dev Tools
PUT _snapshot/backup/snapshot_1?wait_for_completion=true
意思是在仓库backup备份了一个命名为snapshot_1的备份记录
4.查看备份数据
- cmd命令
curl -XGET "http://localhost:9200/_snapshot/backup/_all"
- kibana-Dev Tools
GET _snapshot/backup/_all
5.还原
1).备份data文件夹
data文件夹其实就是当前ES的数据存储地,防止恢复数据出现异常,先把ES目录下面的data目录备份一下。
2).清空数据
恢复数据以前,先把当前ES的数据清空掉。
- cmd命令
curl -XDELETE "http://localhost:9200/_all"
- kibana-Dev Tools
DELETE _all
返回结果以下,则说明清空数据成功。
{
"acknowledged": true
}
3).恢复数据
- cmd命令
curl -XPOST "http://localhost:9200/_snapshot/backup/snapshot_1/_restore"
- kibana-Dev Tools
POST _snapshot/backup/snapshot_1/_restore
返回结果以下,则说明恢复数据成功。
{
"accepted": true
}
6.删除备份数据
- cmd命令
curl -XDELETE "http://localhost:9200/_snapshot/backup/snapshot_1"
- kibana-Dev Tools
DELETE _snapshot/backup/snapshot_1
返回 则说明删除成功。
{
"acknowledged": true
}
7.定时执行备份
1.)设置脚本esbackup.bat
@echo off
REM 获取当前日期并格式化为YYYY-MM-DD
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set datetime=%%I
set year=%datetime:~0,4%
set month=%datetime:~4,2%
set day=%datetime:~6,2%
set formatted_date=%year%-%month%-%day%
REM 执行curl命令备份快照
curl -XPUT "http://localhost:9200/_snapshot/backup/snapshot_%formatted_date%?wait_for_completion=true"
2.在windows设置定时计划
使用Windows任务计划程序设置一个新任务,将该批处理文件作为操作执行,并设置触发器来定时运行该任务。这样就可以实现定时执行Elasticsearch快照备份的功能了。