Elasticsearch灾备同步方案设计(二)

2022-07-26 09:11:06 浏览数 (3)

最近因为客户项目需要,所以专门调研了Elasticsearch的这些不常用的重要功能,并整理成文档,现在分享出来,希望对有这方面需求的同行有些帮助

由于内容较多,一共分为三部分分享

  1. Elasticsearch多主、多数据、多协调、多冷节点节点说明及配置
  2. Elasticsearch灾备同步方案设计
  3. Elasticsearch灾备同步方案设计验证
  • 为了避免ElasticSearch发生意外情况所以对存储的数据进行灾备是在使用ElasticSearch过程中,必不可少的重要环节,通过快照快照进行本地或者分布式备份,ElasticSearch支持多种存储,可以适应与各种场景下的数据灾备需求,并在意外发生后及时的数据还原,持续化的提供ElasticSearch服务能力。
  • 工作流程图
  • 为了多集群共享数据,所以需要创建分布式存储仓库,可以支持NFS、S3,同时需要设置ElasticSearch对应用户的权限
    • 第一次ElasticSearch数据备份是全量备份,再次备份则是增量备份,可以根据业务具体设置增量时间间隔。
    • 如果出现ElasticSearch出现问题,可以用镜像数据进行还原,同时如果也可以在另一个集群实时还原增量数据,以便出现故障时及时切换。
  • 涉及到的elasticsearch.yml配置文件的主要配置项
代码语言:javascript复制
cluster.name: "BoCloud_cluster"
node.name: master_1
node.master: true
http.port: 9200
path.repo: /mount/elasticsearch/data
transport.tcp.port: 9300
discovery.seed_hosts: ["dc_es1","dc_es2","dc_es3"]
cluster.initial_master_nodes: ["dc_es1","dc_es2","dc_es3"]
  • 涉及到主要操作
    • 创建仓库
代码语言:javascript复制
POST _snapshot/es_snapshot_202205
{
  "type": "fs",
  "settings": {
    "location": "/mount/elasticsearch/data",
    "compress": true
  }
}
  • 创建镜像
代码语言:javascript复制
PUT /_snapshot/es_snapshot_202205/snapshot_log?wait_for_completion=true
{
    "indices": "access_log"
}
  • 数据还原&全量还原
代码语言:javascript复制
POST /_snapshot/es_snapshot_202205/snapshot_log/_restore
  • 数据还原&部分索引还原
代码语言:javascript复制
POST /_snapshot/es_snapshot_202205/snapshot_log/_restore
{
  "indices": "access_log",
  "ignore_unavailable": true,
  "include_global_state": false,              
  "rename_pattern": "access_log",
  "rename_replacement": "restored_access_log",
  "include_aliases": false
}
  • 实施建议
    • 快照名称带有日期时间,镜像文件管理
    • 恢复数据之前保证恢复的索引在当前ElasticSearch中没有创建,否则会恢复失败
    • 可以使用定时任务根据业务需求进行定时执行快照任务以保证ElasticSearch数据的可靠性

1 人点赞