环境搭建:
ES | NFS | IP |
---|---|---|
es(主) | nfs(客户端) | 192.168.72.158 |
es(从) | nfs(服务端) | 192.168.72.152 |
es(从) | nfs(客户端) | 192.168.72.153 |
关闭防火墙:systemctl stop firewalld
永久关闭防火墙:systemctl disable firewalld
关闭selinux:sentenforce 0
永久关闭selinux
搭建、启动es集群
安装nfs(三台都装)
安装包
链接: https://pan.baidu.com/s/17p1fl7FM9jMEo-yfe_U0KA 密码: ddgq
cd /nfs
rpm -ivh --nodeps --force *.rpm
启动nfs:
systemctl start rpcbind.service
systemctl start nfs-server.service
开机自启nfs:
systemctl enable rpcbind.service
systemctl enable nfs-server.service
创建共享目录
以下指令在NFS服务端操作
mkdir -p /data/es/backup
chown -R elasticsearch.elasticsearch /data/es/backup
chmod 777 /data/es/backup
修改配置文件
vim /etc/exports
追加以下内容
/data/es/backup /data/es/backup *(rw,sync,no_root_squash,no_subtree_check)
立刻生效
exportfs -a ##立刻生效
exportfs -r ##重新挂载
exportfs -v ##显示共享目录
export -u:表示卸载某一个目录
以下指令在NFS客户端操作
客户端可以创建任意目录,目的是用nfs将服务端共享目录挂载到客户端本地,实现文件同步共享。下面客户端以创建/home/tgram为例
mkdir /home/tgram
chown -R elasticsearch.elasticsearch /home/tgram
chmod 777 /home/tgram
挂载共享目录(客户端操作)
mount -t nfs 192.168.1.190:/data/es/backup /home/tgram/
修改es配置文件,重启es集群(三台都操作)
在elasticsearchc.yml中加入一行
path.repo: /home/tgram 此处是客户端创建共享目录的路径
./elasticsearch &
创建备份仓库
curl -H "Content-Type: application/json" -XPUT 'http://192.168.72.152:9200/_snapshot/EsBackup_zip' -d '{
> "type": "fs",
> "settings": {
> "location": "/home/tgram/compress_snapshot",
> "compress": true
> }
> }'
[2021-01-04T15:36:45,126][INFO ][o.e.r.RepositoriesService] [node01.tgram.com] put repository [EsBackup_zip]
{"acknowledged":true}
查看刚创建的仓库
[root@localhost home]# curl -XGET 'http://192.168.72.152:9200/_snapshot?pretty'
{
"EsBackup_zip" : {
"type" : "fs",
"settings" : {
"compress" : "true",
"location" : "/home/tgram/compress_snapshot"
}
}
}
备份指定索引数据
(假设要备份全部索引数据, 则可以:)
[root@localhost home]# curl -H "Content-Type: application/json" -XPUT 'http://192.168.72.152:9200/_snapshot/EsBackup_zip/snapshot_all'
[2021-01-04T15:54:14,046][INFO ][o.e.s.SnapshotsService ] [node01.tgram.com] snapshot [EsBackup_zip:snapshot_all/8nMl1krVQvaI1VkYLg7fKw] started
{"accepted":true}[root@localhost home]# [2021-01-04T15:54:14,125][INFO ][o.e.s.SnapshotsService ] [node01.tgram.com] snapshot [EsBackup_zip:snapshot_all/8nMl1krVQvaI1VkYLg7fKw] completed with state [SUCCESS]
恢复整个快照索引
[root@localhost compress_snapshot]# curl -H "Content-Type: application/json" -XPOST 'http://192.168.72.158:9200/_snapshot/EsBackup_zip/snapshot_all/_restore'
{"snapshot":{"snapshot":"snapshot_all","indices":[],"shards":{"total":0,"failed":0,"successful":0}}}
查看恢复状态
[root@localhost compress_snapshot]# curl -H "Content-Type: application/json" -XGET 'http://192.168.72.158:9200/_snapshot/EsBackup_zip/snapshot_all/_status'
{"snapshots":[{"snapshot":"snapshot_all","repository":"EsBackup_zip","uuid":"8nMl1krVQvaI1VkYLg7fKw","state":"SUCCESS","include_global_state":true,"shards_stats":{"initializing":0,"started":0,"finalizing":0,"done":0,"failed":0,"total":0},"stats":{"incremental":{"file_count":0,"size_in_bytes":0},"total":{"file_count":0,"size_in_bytes":0},"start_time_i
```
##查看索引、删除索引
```shell
[root@localhost compress_snapshot]# curl -H "Content-Type: application/json" -XGET 'http://192.168.72.158:9200/_cat/indices?v'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open commodity 4sUZXNX0SvO3ZbpwlILQ3A 5 1 0 0 2.5kb 1.2kb
green open label_11009 0oX0nZU_RK-iflF6filOeg 5 1 1 0 7.7kb 3.8kb
[root@localhost compress_snapshot]# curl -H "Content-Type: application/json" -XDELETE 'http://192.168.72.158:9200/commodity'
[2021-01-04T19:20:43,236][INFO ][o.e.c.m.MetaDataDeleteIndexService] [node01.tgram.com] [commodity/4sUZXNX0SvO3ZbpwlILQ3A] deleting index
{"acknowledged":true}
[root@localhost compress_snapshot]# curl -H "Content-Type: application/json" -XDELETE 'http://192.168.72.158:9200/label_11009'
[2021-01-04T19:21:00,756][INFO ][o.e.c.m.MetaDataDeleteIndexService] [node01.tgram.com] [label_11009/0oX0nZU_RK-iflF6filOeg] deleting index
{"acknowledged":true}
再次查看发现所以已删除
[root@localhost compress_snapshot]# curl -H "Content-Type: application/json" -XGET 'http://192.168.72.158:9200/_cat/indices?v'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
恢复单个索引
[root@localhost compress_snapshot]# curl -H "Content-Type: application/json" -XPOST 'http://192.168.72.158:9200/_snapshot/EsBackup_zip/snapshot2_all/_restore' -d '{
> "indices": "label_11009",
> "rename_replacement": "label_22009"
> }'
>
注
本文共设计两个索引commodity、label_11009
两个快照snapshot_all、snapshot2_all
一个仓库 compress_snapshot
snapshot2_all 快照名称
commodity 原有索引名称
label_11009 原有索引名称
label_22009 恢复单个索引要替换的名称
参考:
https://blog.moguang.me/2017/10/31/bigdata/es-backup-restore-md/#5-恢复备份索引