ElasticSearch 数据备份参考

ElasticSearch 数据备份参考

  • 总结: 规模数据建议使用Snapshot and Restore功能,或者用LogStash,小规模数据可以用 elasticdump。

  • 官方建议: 在灾难中,快照可以防止永久数据丢失。快照生命周期管理是对集群进行定期备份的最简单方法。有关详细信息,参阅创建快照。

    警告

    快照是备份集群的唯一可靠且受支持的方法。你无法通过复制 Elasticsearch 集群节点的数据目录来备份该集群。不支持从文件系统级备份中恢复任何数据的方法。如果尝试从这样的备份中恢复集群,它可能会失败,并报告损坏或丢失文件或其他数据不一致,或者它似乎成功又悄悄地丢失了一些数据。

  1. 可以使用Elasticsearch的Snapshot and Restore功能。

    • **快照 还原**模块支持创建单独索引或整个集群的快照到本地或者远程仓库,像共享文件系统、S3或HDFS等。你可以非常方便地进行快照备份以及比较迅速地进行快照还原,但快照的还原需要Elasticsearch的版本能正确的读取索引文件。
    • 在为es集群环境做灾备和恢复时候,首先需要创建创建一个仓库,并往仓库中存放快照(每个快照中会区分不同的索引)。但是在创建仓库的时候,要求仓库的地址必须在每个集群环境中的elasticsearch.yml中进行配置
    • 可以借助ES的 OSS 插件将索引数据备份到OSS上,而不需要停机。 且可以自动备份。
    • 也可以单独备份到本地磁盘然后主动上传到OSS
    sh 复制代码
    #!/bin/bash
    
    # 首先在elasticsearch.yml 新增, 然后重启ES
    path.repo: ["/home/es/snapshot"]
    
    
    # 创建本地快照存储库
    curl -X PUT "http://127.0.0.1:9200/_snapshot/local_repository"  -H 'Content-Type: application/json' -d '{
      "type": "fs",
      "settings": {
        "location": "/home/work/es-backup/snapshot",
        "compress": true
      }
    }'
    
    # 创建快照(备份)到本地磁盘
    curl -X PUT "http://127.0.0.1:9200/_snapshot/local_repository/snapshot_$(date +%s)" -H 'Content-Type: application/json' -d '{
      "indices": "evaluating",
      "ignore_unavailable": true,
      "include_global_state": false
    }'
    
    # 查看状态
    # curl GET "http://127.0.0.1:9200/_snapshot/local_repository/snapshot_$(date +%s)"
    # 等待快照完成
    sleep 10
    
    
    # 上传备份到OSS
    ossutil cp -r /home/work/es-backup/snapshot oss://your-oss-bucket/your_backup_folder
  2. 也可以用 elasticdump 来实现

    • 小规模数据建议使用

      sh 复制代码
      # 备份 mapping
      elasticdump --input=http://127.0.0.1:9200/evaluating --output=/home/work/data/es-backup/evaluating_mapping.json --type=mapping
      
      # 备份数据 - 全量
      elasticdump --input=http://127.0.0.1:9200/evaluating --output=/home/work/data/es-backup/evaluating_data.json --type=data --limit=2000 --parallel=5
      
      # 备份数据 -按范围
      elasticdump --input=http://127.0.0.1:9200/evaluating --output=/home/work/data/es-backup/evaluating_data_20230101.json --type=data --query='{"range": {"beginTime": {"gte": "2023-01-01", "lte": "2023-01-02"}}}'
      
      # 数据导出示例:
      elasticdump --input=http://127.0.0.1:9200/evaluating --output=/home/work/data/es-backup/20231204/evaluating_data.json --type=data --limit=2000 --parallel=10
      
      # 导入示例
      
       elasticdump --input=/home/work/es-import/evaluating_data_20231204.json --output=http://127.0.0.1:9200/evaluating  --type=data --limit=2000 --parallel=10 
      
       # Specify searchBody from a file
       elasticdump \
         --input=http://production.es.com:9200/my_index \
         --output=query.json \
         --searchBody=@/data/searchbody.json  
      
       # Copy a single shard data:
       elasticdump \
         --input=http://es.com:9200/api \
         --output=http://es.com:9200/api2 \
         --input-params="{\"preference\":\"_shards:0\"}"
    • 您可以尝试以下方法来优化elasticdump导出数据的速度和实现快速备份ES数据:

      1. 增加并行度:使用elasticdump的--parallel参数来增加并行度,允许多个文档同时导出,从而提高导出速度。例如:elasticdump --input=http://source:9200/my_index --output=/data/my_index_mapping.json --type=mapping --parallel=10

      2. 调整批量参数:

        --limit=2000 # 每次操作的objects数量,默认100,数据量大的话,可以调大加快迁移速度

      3. 使用快照和恢复:Elasticsearch提供了快照和恢复功能,可以通过创建快照来备份整个索引,并在需要时进行快速恢复。这种方式可以更快速地备份和恢复大量数据。

      4. 增加节点:如果可能的话,增加ES集群的节点数量可以提高数据导出的速度。更多的节点意味着更多的资源和并行处理能力。

      5. 优化网络和硬件:确保网络连接和硬件性能良好,包括ES集群节点和备份目标存储的网络连接,以及备份目标存储的读写性能。

      6. 使用专业工具:考虑使用专业的ES数据备份工具,这些工具通常针对大规模数据备份进行了优化,能够更快速地备份和恢复数据。

  3. 优势对比

    elasticsearch-dump
    • 优势

    • 可以跨集群备份和恢复数据。

    • 可以选择性备份和恢复特定的索引或文档。

    • 可以在不同版本的Elasticsearch之间进行数据迁移。

    • 劣势

    • 需要手动设置备份策略和执行备份操作。

    • 不支持自动化定期备份。

    Elasticsearch的快照和备份功能
    • 优势

    • 集成在Elasticsearch中,易于配置和管理。

    • 支持自动化定期备份。

    • 可以在集群级别进行备份和恢复。

    • 劣势

    • 通常只能在相同版本的Elasticsearch之间进行数据迁移。

    • 对于跨集群备份和恢复,需要额外的设置和配置。

    使用场景
    • elasticsearch-dump 适用于需要跨集群备份和恢复、选择性备份和恢复特定数据、以及在不同版本的Elasticsearch之间进行数据迁移的场景。

    • Elasticsearch的快照和备份功能适用于需要集成、自动化定期备份、以及集群级别备份和恢复的场景。

相关推荐
Dreams°1232 小时前
大数据 ETL + Flume 数据清洗 — 详细教程及实例(附常见问题及解决方案)
大数据·单元测试·可用性测试
sf_www2 小时前
Flink on YARN是如何确定TaskManager个数的
大数据·flink
武子康3 小时前
大数据-213 数据挖掘 机器学习理论 - KMeans Python 实现 距离计算函数 质心函数 聚类函数
大数据·人工智能·python·机器学习·数据挖掘·scikit-learn·kmeans
武子康3 小时前
大数据-214 数据挖掘 机器学习理论 - KMeans Python 实现 算法验证 sklearn n_clusters labels
大数据·人工智能·python·深度学习·算法·机器学习·数据挖掘
Aloudata4 小时前
NoETL自动化指标平台为数据分析提质增效,驱动业务决策
大数据·数据分析·指标平台·指标体系
2401_883041088 小时前
新锐品牌电商代运营公司都有哪些?
大数据·人工智能
青云交8 小时前
大数据新视界 -- 大数据大厂之 Impala 性能优化:融合机器学习的未来之路(上 (2-1))(11/30)
大数据·计算资源·应用案例·数据交互·impala 性能优化·机器学习融合·行业拓展
Json_1817901448011 小时前
An In-depth Look into the 1688 Product Details Data API Interface
大数据·json
Qspace丨轻空间13 小时前
气膜场馆:推动体育文化旅游创新发展的关键力量—轻空间
大数据·人工智能·安全·生活·娱乐
Elastic 中国社区官方博客14 小时前
如何将数据从 AWS S3 导入到 Elastic Cloud - 第 3 部分:Elastic S3 连接器
大数据·elasticsearch·搜索引擎·云计算·全文检索·可用性测试·aws