windows es数据定时备份

windows es数据定时备份

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快照备份的功能了。

<think>好的,我现在需要帮助用户了解如何清理Elasticsearch中的索引。首先,我应该确定用户的需求是什么。清理索引可能涉及删除旧的、不再需要的索引,或者优化存储空间。用户可能是系统管理员或者开发人员,负责维护Elasticsearch集群的健康。 接下来,我要回忆Elasticsearch中索引清理的常见方法。通常,可以通过手动删除、使用Curator工具、基于索引生命周期管理(ILM)策略,或者编写脚本自动清理。需要分步骤解释这些方法,确保用户能理解每个方法的适用场景和操作步骤。 用户可能对Elasticsearch的基本概念有所了解,但需要具体的操作指导。例如,手动删除索引需要知道具体的索引名称或通配符,而使用Curator则需要安装和配置。ILM策略适合长期自动管理,但需要设置策略和索引模板。脚本方法可能适合有编程经验的用户,但需要处理日期解析和异常情况。 需要考虑安全性和风险。删除索引是不可逆的操作,必须提醒用户谨慎操作,提前备份数据。同时,权限方面,执行删除操作需要相应的权限,比如集群的manage权限。 可能用户的问题还涉及到如何自动化清理,避免手动操作带来的疏忽。因此,详细介绍Curator和ILM会更有帮助。此外,按时间序列命名的索引是常见的清理场景,比如日志索引,需要根据时间模式进行删除。 需要检查每个步骤的准确性和命令的正确性。例如,手动删除的命令是否正确,Curator的配置文件示例是否恰当,ILM策略的API调用是否有误。同时,脚本中的日期解析是否准确,比如使用date命令的格式是否匹配索引的后缀。 还要考虑不同环境下的差异,比如Linux和Windows系统在路径和命令上的区别,但用户可能更多使用Linux,所以示例以Linux为准。另外,Elasticsearch的版本差异,比如Curator在7.x之后的版本可能需要不同的配置方式,或者ILM在较新版本中的可用性。 最后,总结部分需要强调选择合适的方法,注意事项的重要性,确保用户在实际操作中不会误删数据。可能还需要提醒用户监控磁盘使用情况,设置警报,预防存储空间不足的问题。 现在需要将以上思考整理成结构清晰的中文回答,分步骤说明每种方法,并给出示例和注意事项,确保用户能安全有效地清理索引。</think>Elasticsearch 清理索引操作指南 清理索引是维护ES集群健康的重要操作,以下是详细方法和注意事项: 一、清理索引的4种核心方法 1. 手动删除(适合临时清理) - 删除单个索引 ```bash curl -X DELETE "http://localhost:9200/index_name" ``` - 使用通配符批量删除 ```bash curl -X DELETE "http://localhost:9200/logs-2023-*" ``` 2. Curator工具(推荐定期清理) 安装步骤: ```bash pip install elasticsearch-curator ``` 配置文件示例(curator.yml): ```yaml client: hosts: ["localhost"] port: 9200 use_ssl: False ``` 执行删除策略(delete_indices.yml): ```yaml actions: 1: action: delete_indices description: "删除30天前的日志" filters: - filtertype: pattern kind: prefix value: logs- - filtertype: age source: creation_date direction: older unit: days unit_count: 30 ``` 3. ILM索引生命周期管理(自动清理方案) 创建策略: ```bash PUT _ilm/policy/logs_policy { "policy": { "phases": { "hot": { "min_age": "0ms", "actions": {"rollover": {"max_size": "50gb"}} }, "delete": { "min_age": "30d", "actions": {"delete": {}} } } } } ``` 4. 脚本自动化(灵活定制方案) Python脚本示例: ```python from datetime import datetime, timedelta from elasticsearch import Elasticsearch es = Elasticsearch() cutoff_date = datetime.now() - timedelta(days=30) all_indices = es.cat.indices(format='json') for idx in all_indices: if idx['index'].startswith('logs-'): index_date = datetime.strptime(idx['index'][5:], '%Y-%m-%d') if index_date < cutoff_date: es.indices.delete(index=idx['index']) ``` 二、最佳实践与注意事项 1. 操作前检查清单 - ✅ 确认索引名称模式 - ✅ 验证备份机制有效性 - ✅ 检查磁盘空间监控告警 - ✅ 准备回滚方案(快照恢复) 2. 风险控制措施 - 生产环境建议保留3天缓冲期(如实际保留33天数据) - 使用dry-run模式验证(Curator添加--dry-run参数) - 设置索引删除延迟: ```bash PUT _cluster/settings { "persistent": { "action.destructive_requires_name": true } } ``` 3. 监控指标建议 - 集群健康状态(_cluster/health) - 磁盘使用率(超过80%需告警) - 索引删除速率(避免过高IO压力) 三、典型应用场景 1. 日志类数据 - 保留策略:根据合规要求设置(如GDPR保留6个月) - 命名规范:applogs-YYYY-MM-dd 2. 业务数据 - 冷热分离:将旧索引迁移到冷节点 - 合并优化:对只读索引执行force merge 3. 测试环境 - 定时清理:每日凌晨清理7天前的测试索引 - 模式匹配:test-*, staging-* 四、进阶技巧 1. 使用别名实现无缝切换 ```bash POST _aliases { "actions" : [ { "add" : { "index" : "logs-2023-10", "alias" : "current_logs" } } ] } ``` 2. 结合快照长期归档 ```bash PUT _snapshot/my_repository/logs_snapshot { "indices": "logs-*", "ignore_unavailable": true } ``` 3. 索引分片优化(清理前执行) ```bash POST logs-*/_forcemerge?max_num_segments=1 ``` 清理索引时,建议优先使用ILM策略实现自动化管理,结合Curator进行定期维护检查。对于关键业务数据,务必建立完善的备份机制和恢复演练流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ayou2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值