elasticsearch索引数据快照备份和恢复

  

最近线上的ES集群埋点数据量暴涨,机器的内存磁盘空间眼看就要炸了。但这部分数据又是冷数据,现时不需要查询,但又不能直接删除,需保留日后数据分析。由于前期急于上线,业务代码没有合理分配索引按月切割,全年数据丢进单个索引,导致单索引数据暴涨到100 g +
为解决磁盘空间的瓶颈,针对不常用的分片数据,做快照冷存储。
应用场景:
三节点的ES集群:192.168.85.39,192.168.85.36,192.168.85.33

  

找一台有磁盘空间的服务器,搭建NFS,用于共享目录挂载。已192.168.85.63为例

  

应用场景:ES集群三节点192.168.85.39,192.168.85.33,192.168.85.36
NFS存储服务器:192.168.5.63

  

一。搭建NFS共享存储服务器(5.63上操作)

  
 <代码> 1。安装nfs服务
  yum安装- y nfs-utils
  
  2. 开机启动
  systemctl启用rpcbind.service
  systemctl启用nfs-server.service
  
  3.分别启动rpcbind和nfs服务:
  systemctl开始rpcbind.service
  systemctl开始nfs-server.service
  
  4.firewalld防火墙针对es节点内网ip开放NFS服务监听端口:
  2049 20048 111 udp端口tcp端口tcp和udp全开
  
  5.创建本地数据共享目录并设置权限
  mkdir/数据/db/elasticsearch/备份
  chmod 777/数据/db/elasticsearch/备份
  乔恩- r elasticsearch: elasticsearch/数据/db/elasticsearch/备份
  
  6 .配置NFS目录访问权限
  vim等/出口/数据/db/elasticsearch/备份192.168.85.39 (rw,同步,all_squash) 192.168.85.33 (rw,同步,all_squash) 192.168.85.36 (rw,同步,all_squash)
  出口- r//生效
  出口- s//查看
  
  es 7.节点上安装客户端(85.39 85.33 85.36上操作)
  百胜是安装showmount
  开启服务:
  systemctl启用rpcbind.service
  systemctl开始rpcbind.service
  8。创建挂载目录(85.39 85.33 85.36上分别操作)
  mkdir/mnt/elasticsearch
  chmod 777 elasticsearch
  
  挂载共享目录到本地
  挂载nfs - t 192.168.5.63:/数据/db/elasticsearch/备份/mnt/elasticsearch
  
  df - h//查看确认是否成功挂载 
  

二。创建快照仓库

  
 <代码>旋度-XPUT http://192.168.85.39:9002 _snapshot/备份- d '
  {
  “类型”:“f”,
  "设置":{
  “位置”:“/mnt/elasticsearch/备份”,
  “压缩”:没错,
  “max_snapshot_bytes_per_sec”:“50 mb”,
  “max_restore_bytes_per_sec”:“50 mb”
  }
  }'
  
  备注说明:
  1 .可在es任一节点操作
  2.备份:指定仓库名称为备份,生成的备份文件存放路径为/mnt/elasticsearch/备份
  3.max_snapshot_bytes_per_sec, max_restore_bytes_per_sec限定备份和恢复的数据字节内容大小为50 mb,
  为了防止磁盘IO过高。数值越大,备份恢复速度越快.50mb为推荐值,IO性能高的机器可不限制
  
  旋度-XPUT http://192.168.85.39:9002 _snapshot/备份- d '
  {
  “类型”:“f”,
  "设置":{
  “位置”:“/mnt/elasticsearch/备份”,
  “压缩”:真的
  }
  }'  
  

三。创建快照备份
1。针对全索引快照备份

  
 <代码>旋度-XPUT 192.168.85.39:9002/_snapshot/备份/snapshot_all ?漂亮
  
  备注说明:
  1 .指定备份到仓库备份
  2.快照名称为snapshot_all  
  

2。针对指定某个单独索引快照备份(为了区分不同索引备份目录,建议仓库用索引名称命名)

  
 <代码>单独快照备份user_event_201810这个索引
  2.1先针对索引创建仓库
  旋度-XPUT http://192.168.85.39:9002 _snapshot/user_event_201810 - d '
  {
  “类型”:“f”,
  "设置":{
  “位置”:“/mnt/elasticsearch/user_event_201810”,
  “压缩”:没错,
  “max_snapshot_bytes_per_sec”:“50 mb”,
  “max_restore_bytes_per_sec”:“50 mb”
  }
  }'
  
  2.2快照备份索引user_event_201810操作
  旋度-XPUT http://192.168.85.39:9002 _snapshot/user_event_201810/user_event_201810吗?wait_for_completion=true - d '
  {
  “指数”:“user_event_201810”,
  “ignore_unavailable”:“真正的”,
  “include_global_state”:假的
  }'
  
  备注说明:
  1 .创建的仓库名为user_event_201810
  2 .存放的文件目录为/mnt/elasticsearch/user_event_201810
  3.指数:指定索引源为user_event_201810
  4 .增加? wait_for_completion=true参数是为了执行完成返回结果状态 
  

四。恢复快照备份数据到es集群
1。针对全索引快照备份的恢复操作

  
 

elasticsearch索引数据快照备份和恢复