ElasticSearch的灾备同步方案

时间:2022-12-13 18:02:36

为了避免ElasticSearch发生意外情况发生,导致数据丢失或者整个集群不能提供服务,所以对存储的数据进行灾备是在使用ElasticSearch过程中,必不可少的重要环节。

主要分享低代码、微服务、容器化、SAAS‬、系统架构方面的的‬内容‬‬,希望‬大家‬点赞‬,评论,关注‬。

  • 为了避免ElasticSearch发生意外情况所以对存储的数据进行灾备是在使用ElasticSearch过程中,必不可少的重要环节,通过快照快照进行本地或者分布式备份,ElasticSearch支持多种存储,可以适应与各种场景下的数据灾备需求,并在意外发生后及时的数据还原,持续化的提供ElasticSearch服务能力。
  • 工作流程图

ElasticSearch的灾备同步方案

  • 为了多集群共享数据,所以需要创建分布式存储仓库,可以支持NFS、S3,同时需要设置ElasticSearch对应用户的权限
  • 第一次ElasticSearch数据备份是全量备份,再次备份则是增量备份,可以根据业务具体设置增量时间间隔。
  • 如果出现ElasticSearch出现问题,可以用镜像数据进行还原,同时如果也可以在另一个集群实时还原增量数据,以便出现故障时及时切换。
  • 涉及到的elasticsearch.yml配置文件的主要配置项
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"]
  • path.repo 需要设置仓库地址,进行数据存储是需要在改目录下,支持nfs、s3、hdfs。在创建仓库前一定要设置好仓库地址
  • 涉及到主要操作=
  • 创建仓库
POST _snapshot/es_snapshot_202205
{
"type": "fs",
"settings": {
"location": "/mount/elasticsearch/data",
"compress": true
}
}
  • es_snapshot_202205 仓库名称
  • type 文件类型
  • compress 是否启用压缩
  • 创建镜像
PUT /_snapshot/es_snapshot_202205/snapshot_log?wait_for_completion=true
{
"indices": "access_log"
}
  • snapshot_log 镜像名称
  • wait_for_completion 是否等待快照保存结束时才会返回结果。反之异步返回结果
  • indices 设置要备份的索引,也可以不设置备份全部索引数据
  • 数据还原&全量还原
POST /_snapshot/es_snapshot_202205/snapshot_log/_restore
  • 恢复snapshot_log镜像中的索引及数据,注意如果集群中已有快照的索引那就会报索引已存在的错误。所以在数据还原时需要确认是否存在同名的索引
  • 数据还原&部分索引还原
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
}
  • ignore_unavailable false表示当缺少access_log索引时报错
  • include_global_state false 将还原快照中的所有数据流和索引,但不还原群集状态
  • include_aliases 是否需要恢复别名,true恢复,false不恢复别名
  • 实施建议
  • 快照名称带有日期时间,镜像文件管理
  • 恢复数据之前保证恢复的索引在当前ElasticSearch中没有创建,否则会恢复失败
  • 可以使用定时任务根据业务需求进行定时执行快照任务以保证ElasticSearch数据的可靠性

主要分享低代码、微服务、容器化、SAAS‬、系统架构方面的的‬内容‬‬,希望‬大家‬点赞‬,评论,关注‬。