1. 数据条件
一台原始es服务器(192.168.xx.xx),数据迁移后的目标服务器(10.2.xx.xx)。
2台服务器所处环境: centos7操作系统, elasticsearch-7.3.0。
2. 为原始es服务器数据创建快照
-
修改elasticsearch.yml配置文件,添加
[root@localhost config]# vi elasticsearch.yml # 添加如下行,保当前配置的仓库目录存在,如果不存在,需提前创建,并为该文件夹配置好权限,本人设置的为777权限 path.repo: ["要存储快照文件的地址"]
修改后重启es
-
注册快照存储库
请求方式:put,可以使用postman 路径:http://192.168.xx.xx:9200/_snapshot/my_backup ## my_backup为快照仓库名称 参数: { "type": "fs", "settings": { "location": "/home/soft/es/backup" ## location是快照存储位置,和第1步定义的位置保持一致 } }
-
创建快照
请求方式: put http://192.168.xx.xx:9200/_snapshot/my_backup/snapshot_1?wait_for_completion=true # my_backup:是上一步设置的仓库名称 # snapshot_1:是自定义的快照名称,可以自己定义,在恢复的时候会用到 # wait_for_completion:true 参数的作用:访问链接不会马上结束,而是会一直等待,等到完成为止
-
执行完第三步后就可以在最开始定义的快照存储目录下查看快照文件
-
将快照文件整体打包,然后转移到要进行恢复的es服务器下,自定义一个存储路径,后面还会用到,比如我放到了另一个服务器下和本台服务器相同的位置。
3. 在另一台服务器上开始恢复数据
-
和原始服务器一样,在目标服务器上修改elasticsearch.yml配置文件,添加path.repo
[root@localhost config]# vi elasticsearch.yml # 添加如下行,保当前配置的仓库目录存在,如果不存在,需提前创建,并为该文件夹配置好权限,本人设置的为777权限 path.repo: ["要存储快照文件的地址"]
注意,es的启动不能用root用户,要用普通用户,所以这里要保证该文档的所有权是属于es启动的普通用户的。
-
改变目录拥有者账号命令:(
如果backup本身就是属于es登录的普通用户的,此步骤可不用
)## 修改backup拥有者为esznj,这个账号是我自己启动es的普通用户,要根据自己实际的启动用户进行设置 [root@localhost es]# chown -R esznj backup/
-
将在原服务器上创建好的es快照文件复制到目标服务器上,存储在知道的快照文件存储目录backup下
-
在目标主机上建立相同的快照仓库
请求方式:put,可以使用postman 路径:http://10.0.xx.xx:9200/_snapshot/my_backup ## my_backup为快照仓库名称 参数: { "type": "fs", "settings": { "location": "/home/soft/es/backup" ## location是快照存储位置,和第1步定义的位置保持一致 } }
-
恢复数据
# my_backup:仓库名称,原数据创建快照时设定的 # snapshot_1:快照名称,原数据创建快照时设定的 http://10.0.xx.xx:9200/_snapshot/my_backup/snapshot_1/_restore
-
查看恢复的数据:
在浏览器上可直接访问 查看索引:http://192.168.xx.xx:9200/_cat/indices 查看健康状态:http://10.0.xx.xx:9200/_cat/health
over!