创建NFS共享
服务器A(172.17.0.15)共享指定目录给服务器B(172.17.0.16)
在服务器A上
sudo yum install -y nfs-utils
mkdir -p /nfs_share/es_backups
chown -R elasticsearch:elasticsearch /nfs_share/es_backups
chmod 755 /nfs_share/es_backups
# 配置文件
echo "/nfs_share/es_backups 172.17.0.0/16(rw,sync,no_root_squash)" >> /etc/exports
systemctl enable rpcbind
systemctl enable nfs-server
systemctl start rpcbind
systemctl start nfs-server
exportfs -arv
在服务器B
yum install -y nfs-utils
mkdir -p /data/es_backups
mount -t nfs 172.17.0.15:/nfs_share/es_backups /data/es_backups
# 验证是否成功
df -hT
这样,在其他服务器可以看到A服务器/nfs_share/es_backups的内容
备份ES快照
需要备份A服务器的内容,在B服务器恢复
服务器A、B的ES版本为6.7.0
配置NFS共享
(见上述配置NFS共享的步骤)
修改配置
修改A服务器的配置文件(集群的几台ES都需要修改)
vim /etc/elasticsearch/elasticsearch.yml
# 修改快照存放路径。例如ES集群有3台,这3台服务器要配置在同一个共享存储(非同一路径),通过上述NFS的方式共享文件目录
path.repo: ["/data/es_backups"] # 替换为NFS快照目录
重启ES服务
systemctl restart elasticsearch
备份快照
注册快照仓库
可在Kibana的Dev Tools工具中执行
PUT _snapshot/my_es_backup_repo
{
"type": "fs",
"settings": {
"location": "/data/es_backups"
}
}
验证是否注册成功
GET _snapshot/my_es_backup_repo
创建快照
PUT _snapshot/my_es_backup_repo/snapshot_full_$(date +%Y%m%d%H%M%S)?wait_for_completion=true
{
"indices": "*",
"ignore_unavailable": true,
"include_global_state": true
}
- snapshotfull$(date +%Y%m%d%H%M%S) 会生成一个带时间戳的快照名称。
- wait_for_completion=true 会让请求阻塞直到快照完成。
- indices: "*" 表示备份所有索引。
- include_global_state: true 包含集群的全局状态(如模板、持久化设置等)。
恢复快照
安装插件
参考服务器A的插件列表,安装相同的插件
安装插件命令
/usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/6.7.0.0/elasticsearch-sql-6.7.0.0.zip
配置ES
将服务器A的配置文件拷贝过来稍加修改(集群名称、IP地址、端口等)
注意:也需要先安装NFS,共享目录给ES集群其他机器
vim /etc/elasticsearch/elasticsearch.yml
## 集群ES修改挂载的目录为NFS共享目录
path.repo: /data/es_backups
传输快照文件
将服务器A备份的快照文件存放在/data/es_backups目录(该目录已共享给其他节点的ES服务器挂载,确保其他节点的服务器配置的path.repo: /data/es_backups都能访问到相同的快照数据)
修改权限
chown -R elasticsearch:elasticsearch /mnt/es_backups
chmod 755 /mnt/es_backups
重启ES
systemctl restart elasticsearch
注册快照仓库
PUT _snapshot/my_es_backup_repo
{
"type": "fs",
"settings": {
"location": "/mnt/es_backups"
}
}
删除所有索引
防止索引冲突导致报错
curl -X DELETE "http://172.17.0.15:9200/_all?pretty"
恢复快照
curl -X POST "http://172.17.0.15:9200/_snapshot/my_backup_repo/snapshot_business_data_20250722_final/_restore?pretty" -H 'Content-Type: application/json' -d'
{
"indices": "*",
"partial": false,
"include_global_state": true,
"index_settings": {
"index.number_of_replicas": 0
}
}
'
注意,上面的快照名称snapshot_business_data_20250722_final可通过以下命令查看
curl -X GET "http://172.17.0.15:9200/_cat/snapshots/my_backup_repo?v&pretty"
查看集群状态
curl -X GET "http://172.17.0.10:9200/_cat/nodes?v"
查看索引
curl -X GET "http://172.17.0.15:9200/_cat/indices?v&pretty"
版权所有,转载注明来源

评论(0)