ELK运维之路(数据备份and还原)

1 部署NFS

bash 复制代码
# 安装(192.168.1.98)NFS
root@ubuntu2204-98:~# apt install -y nfs-kernel-server nfs-common
root@ubuntu2204-98:~# mkdir nfs
root@ubuntu2204-98:~# chmod 777 -R nfs

root@ubuntu2204-98:~# vi /etc/exports
/root/nfs     *(rw,sync,no_root_squash,no_subtree_check,insecure)
# /root/nfs:共享的目录路径。
# *:允许访问的客户端 IP 范围,*表示所有ip(可以根据实际情况修改,例如:192.168.1.0/24)。
# rw:允许读写权限。
# sync:同步写入磁盘。
# no_all_squash,不将所有用户映射为匿名用户
# no_root_squash,允许客户端的 root 用户以 root 身份访问
# no_subtree_check:减少子树检查,提高性能。

root@ubuntu2204-98:~#  exportfs -a
root@ubuntu2204-98:~# systemctl start nfs-kernel-server


# 挂载(192.168.1.99)NFS
root@ubuntu2204test99:~# apt install -y nfs-common
root@ubuntu2204test99:~# mkdir nfs98
root@ubuntu2204test99:~# mount -t nfs 192.168.1.98:/root/nfs /root/nfs98
# 参数解释:
# 192.168.1.98:NFS 服务端的 IP 地址。
# /root/nfs:服务端的共享目录。
# /root/nfs98:客户端的挂载点。
root@ubuntu2204test99:~# df -hT|grep nfs
192.168.1.98:/root/nfs            nfs4      48G   22G   24G  48% /root/nfs98
root@ubuntu2204test99:~# vi /etc/fstab
192.168.1.98:/root/nfs /root/nfs98 nfs defaults 0 0

2 Elasticsearch7设置备份路径

bash 复制代码
# elasticsearch添加配置
root@ubuntu2204test99:~# vi elkf/elasticsearch/config/elasticsearch-1.yml
path.repo: /usr/share/elasticsearch/nfs

# Docker-compose文件增加磁盘映射
    volumes:
      # ...省略
      - /root/nfs98:/usr/share/elasticsearch/nfs

3 创建备份仓库

bash 复制代码
# 创建备份仓库
root@ubuntu2204test99:~/elkf# curl -XPOST 'http://192.168.1.99:9201/_snapshot/_esbackup' -H 'Content-Type:application/json' -u 'elastic:123456' -d '{
  "type":"fs",
  "settings":{"compress":"true",
  "location":"/usr/share/elasticsearch/nfs"
  }
}'

# 查看仓库
root@ubuntu2204test99:~/elkf# curl -XGET 'http://192.168.1.99:9201/_snapshot/_all' \
-H 'Content-Type: application/json' \
-u 'elastic:123456'
{"_esbackup":{"type":"fs","settings":{"compress":"true","location":"/usr/share/elasticsearch/nfs"}}}

4 备份索引到仓库中

bash 复制代码
# 备份命令(备份所有索引,忽略.kibana开头的索引)
root@ubuntu2204test99:~/elkf# curl -XPOST 'http://192.168.1.99:9201/_snapshot/_esbackup/snapshot_1' \
-H 'Content-Type: application/json' \
-u 'elastic:123456' \
-d '{
  "indices": "*,-.kibana*",
  "ignore_unavailable": true,
  "include_global_state": false
}'
# 查看备份
root@ubuntu2204test99:~# ll nfs98/
total 100
drwxrwxrwx  3 root root  4096 Nov  3 03:21 ./
drwx------ 16 root root  4096 Nov  3 02:56 ../
-rw-rw-r--  1 wolf root 11105 Nov  3 03:21 index-0
-rw-rw-r--  1 wolf root     8 Nov  3 03:21 index.latest
drwxrwxr-x 39 wolf root  4096 Nov  3 03:21 indices/
-rw-rw-r--  1 wolf root 68339 Nov  3 03:21 meta-Ta9qZ2WzTwSo7h6G2-4VNw.dat
-rw-rw-r--  1 wolf root  1165 Nov  3 03:21 snap-Ta9qZ2WzTwSo7h6G2-4VNw.dat

5 恢复备份

bash 复制代码
# elasticsearch新集群添加配置
root@ubuntu2204test98:~# vi elkf/elasticsearch/config/elasticsearch-1.yml
path.repo: /usr/share/elasticsearch/nfs

# Docker-compose文件增加磁盘映射
    volumes:
      # ...省略
      - /root/nfs98:/usr/share/elasticsearch/nfs

# 创建备份仓库
root@ubuntu2204test98:~/elkf# curl -XPOST 'http://192.168.1.98:9201/_snapshot/_esbackup' -H 'Content-Type:application/json' -u 'elastic:123456' -d '{
  "type":"fs",
  "settings":{"compress":"true",
  "location":"/usr/share/elasticsearch/nfs"
  }
}'

# 查看备份目录中的内容
root@ubuntu2204test98:~/elkf# curl -XGET 192.168.1.99:9201/_snapshot/_esbackup/_all \
-H 'Content-Type: application/json' \
-u 'elastic:123456'

# 恢复仓库中的备份
root@ubuntu2204test98:~/elkf# curl -XPOST 'http://192.168.1.98:9201/_snapshot/_esbackup/snapshot_1/_restore' \
-u 'elastic:123456' \
-H 'Content-Type: application/json' \
-d '{
  "indices": "*",
  "ignore_unavailable": true,
  "include_global_state": false
}'

6 常用命令

bash 复制代码
# 查看备份的状态,通过state字段来看是否完成备份
root@ubuntu2204test99:~/elkf# curl -XGET 'http://192.168.1.99:9201/_snapshot/_esbackup/snapshot_1/_status' -H 'Content-Type:application/json' -u 'elastic:123456'
stage字段含义:
INITIALIZING:检查分片状态是否符合备份条件。这通常非常快。
TARTED:正在传输到存储库。
FINALIZING:数据传输完成,分片现在正在发送快照元数据。
DONE:快照成功
FAILED:快照遇到错误。

# 查看所有快照信息
root@ubuntu2204test99:~/elkf# curl -XGET 'http://192.168.1.99:9201/_snapshot/_esbackup/_all' -H 'Content-Type:application/json' -u 'elastic:123456'

# 查看快照信息
root@ubuntu2204test99:~/elkf# curl -XGET 'http://192.168.1.99:9201/_snapshot/_esbackup/snapshot_1' -H 'Content-Type:application/json' -u 'elastic:123456'

# 删除快照
root@ubuntu2204test99:~# curl -XDELETE 'http://192.168.1.99:9201/_snapshot/_esbackup/snapshot_1' -u 'elastic:123456'

# 恢复备份中所有内容
root@ubuntu2204test99:~/elkf# curl -XGET 'http://192.168.1.99:9201/_snapshot/_esbackup/snapshot_1/_restore' -H 'Content-Type:application/json' -u 'elastic:123456'

# 恢复快照中的部分索引
root@ubuntu2204test99:~/elkf# curl -XPOST 'http://192.168.1.99:9201/_snapshot/_esbackup/snapshot_1/_restore' \
-H 'Content-Type:application/json' \
-u 'elastic:123456' \
-d '{"indices": "filebeat-javalog-mutli-2025.10.20"}'

默认恢复该快照中的所有索引,默认异步,可使用wait_for_completion=true,改为同步
POST _snapshot/esbackup/snapshot_1/_restore
相关推荐
酷酷的崽79813 分钟前
CANN 生态可维护性与可观测性:构建生产级边缘 AI 系统的运维体系
运维·人工智能
做人不要太理性18 分钟前
CANN Runtime 运行时组件深度解析:任务调度机制、存储管理策略与维测体系构建逻辑
android·运维·魔珐星云
XiaoFan01222 分钟前
免密批量抓取日志并集中输出
java·linux·服务器
souyuanzhanvip28 分钟前
ServerBox v1.0.1316 跨平台 Linux 服务器管理工具
linux·运维·服务器
文静小土豆37 分钟前
Docker 与 containerd 代理配置详解:镜像拉取速度慢的终极解决方案
运维·docker·容器
roman_日积跬步-终至千里1 小时前
【LangGraph4j】LangGraph4j 核心概念与图编排原理
java·服务器·数据库
野犬寒鸦2 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
HalvmånEver2 小时前
Linux:线程互斥
java·linux·运维
JY.yuyu2 小时前
Docker常用命令——数据卷管理 / 端口映射 / 容器互联
运维·docker·容器
alice--小文子3 小时前
cursor-mcp工具使用
java·服务器·前端