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的快照和备份功能适用于需要集成、自动化定期备份、以及集群级别备份和恢复的场景。

相关推荐
源码技术栈2 小时前
SaaS基于云计算、大数据的Java云HIS平台信息化系统源码
java·大数据·云计算·云his·his系统·云医院·区域his
Elastic 中国社区官方博客2 小时前
Elasticsearch 索引副本数
大数据·数据库·elasticsearch·搜索引擎·全文检索
Eternity......2 小时前
SparkSQL基本操作
大数据·spark
枫叶落雨2222 小时前
下载的旧版的jenkins,为什么没有旧版的插件
运维·jenkins
268572592 小时前
Elasticsearch 初步认识
大数据·elasticsearch·搜索引擎·全文检索·es
python算法(魔法师版)3 小时前
网络编程入门(一)
大数据·网络·网络协议·计算机网络
caihuayuan54 小时前
生产模式下react项目报错minified react error #130的问题
java·大数据·spring boot·后端·课程设计
兔子坨坨5 小时前
详细了解HDFS
大数据·hadoop·hdfs·big data
夏旭泽5 小时前
系统架构-大数据架构设计
大数据·系统架构
Eternity......6 小时前
Spark,连接MySQL数据库,添加数据,读取数据
大数据·spark