备份和还原原理,使用ElasticSearch中的快照进行备份和还原。
- ElasticSearch配置
在elasticsearch.yml文件中增加如下配置(如果是集群,每个几点都需要设置):#设置快照存储地址 path.repo: ["D:\\Net_Program\\Net_ElasticSearch\\backup"]
-
创建快照存储库
这里我们使用Kibana提供的开发工具进行设置,在开发工具栏中输入如下命令创建名称为scyj_bak_ypt的存储库(location代表的就是存储库文件存储的地址),如下所示:PUT /_snapshot/scyj_bak_ypt { "type": "fs", "settings": { "location": "D:\\Net_Program\\Net_ElasticSearch\\backup" } }
我们在Kibana中就可以看到刚才创建的存储库了 -
备份指定索引(创建快照)
输入如下命令备份指定索引的数据,其中的indices代表要备份的索引名称(要备份多个索引的数据,使用英文的逗号分隔即可。如果要备份前缀相同的所有索引,使用*进行匹配,如scyj_ypt_*就代表备份前缀为scyj_ypt_的所有索引),syj_bak20210910代表备份文件(快照文件)的名称PUT /_snapshot/scyj_bak_ypt/syj_bak20210910?wait_for_completion=true { "indices": "scyj_ypt_es_syj_data", "ignore_unavailable": true, "include_global_state": false }
我们在Kibana中就可以看到刚才创建的快照文件了 -
还原备份(快照)数据
输入如下命令还原指定的快照数据(syj_bak20210910代表还原的备份文件【快照名称】)POST /_snapshot/scyj_bak_ypt/syj_bak20210910/_restore
如果想恢复快照中指定的索引数据,指定具体的索引参数名称即可,如下所示:POST /_snapshot/scyj_bak_ypt/syj_bak20210910/_restore { "indices": "scyj_ypt_es_syj_data" }
另外,还可以在恢复命令后面增加?wait_for_completion=true参数,用于阻塞命令直到恢复完成再返回信息,恢复任务会在后台自动执行下去,如下所示:
POST /_snapshot/scyj_bak_ypt/syj_bak20210910/_restore?wait_for_completion=true { "indices": "scyj_ypt_es_syj_data" }
如果还原遇到如下错误,请先删除返回的错误信息中的索引.geoip_databases,然后再还原
到此,ElasticSearch的数据备份和还原就处理完成了。
最后附上ElasticSearch中快照的常用操作命令:
1、查询所有存储库
GET /_snapshot/_all
2、查看存储库下的所有快照
GET /_snapshot/scyj_bak_ypt/_all
3、查看快照中的所有索引
GET /_snapshot/scyj_bak_ypt/syj_bak20210910
4、查看快照状态
GET /_snapshot/scyj_bak_ypt/syj_bak20210910/_status
5、删除快照
DELETE /_snapshot/scyj_bak_ypt/syj_bak20210910