假设ES集群有三个节点:
192.168.1.10
192.168.1.11
192.168.1.12
1. 创建共享目录
在三个节点上创建共享目录/mnt/backup/,使三个节点的es用户都可以读写该目录。(推荐使用nfs创建共享目录)
2. 修改ES配置
在elasticsearch.yml中加入一行:
path.repo: /mnt/backup/
修改后重启es集群。
3. 创建备份仓库
curl -XPUT 'http://192.168.1.10:9200/_snapshot/EsBackup_zip' -d '{
"type": "fs",
"settings": {
"location": "/mnt/backup/compress_snapshot",
"compress": true
}
}'
成功后结果返回{"acknowledged":true}. 这时查看刚创建的仓库:
curl -XGET 'http://192.168.1.10:9200/_snapshot?pretty'
正常结果返回:
{
"EsBackup_zip" : {
"type" : "fs",
"settings" : {
"compress" : "true",
"location" : "/mnt/backup/compress_snapshot"
}
}
}
4. 备份指定索引数据
假设要备份单个索引, 索引名为: user_behavior_201702
curl -XPUT 'http://192.168.1.10:9200/_snapshot/EsBackup_zip/snapshot_user_behavior_201702' -d '{"indices": "user_behavior_201702"}'
提交备份快照请求后, 查看备份状态:
curl -XGET 'http://192.168.1.12:9200/_snapshot/EsBackup_zip/snapshot_user_behavior_201702?pretty'
假设要备份多个索引, 比如idx_1, idx_2, idx_3, 则可以:
curl -XPUT 'http://192.168.1.10:9200/_snapshot/EsBackup_zip/snapshot_some_name' -d '{"indices": "idx_1,idx_2,idx_3"}'
假设要备份全部索引数据, 则可以:
curl -XPUT 'http://192.168.1.10:9200/_snapshot/EsBackup_zip/snapshot_all'
5. 恢复备份索引
删除已备份的索引:
curl -XDELETE "http://192.168.1.10:9200/user_behavior_201702"
恢复单个索引:
curl -XPOST 'http://192.168.1.10:9200/_snapshot/EsBackup_zip/snapshot_user_behavior_201702/_restore' -d '{
"indices": "user_behavior_201702",
"rename_replacement": "restored_ub_201702"
}'
恢复整个快照索引:
curl -XPOST 'http://192.168.1.10:9200/_snapshot/EsBackup_zip/snapshot_some_name/_restore'
提交请求成功后返回{"accepted":true}。
查看恢复状态:
curl -XGET "http://192.168.1.10:9200/_snapshot/EsBackup_zip/snapshot_user_behavior_201702/_status"
6.数据迁移
查看elasticsearch/config/elasticsearch.yml配置文件中的path.data,获取数据存储路径:/var/data/elasticsearch。
执行_cat/indices命令,获取待迁移索引的uuid。
打开/var/data/elasticsearch/node/0/文件夹即可看到该索引的数据存储文件夹,文件夹以索引的uuid命名:
![6eeb4b85a9c05302b8860f5eeae57700.png](https://img-blog.csdnimg.cn/img_convert/6eeb4b85a9c05302b8860f5eeae57700.png)
![232e9657c3dec9944c331526ff912daf.png](https://img-blog.csdnimg.cn/img_convert/232e9657c3dec9944c331526ff912daf.png)
将集群内各个es节点的上述路径下的F5bPAnI_RCeIrcmv9QnZRg文件夹分别拷贝到新集群各个节点的数据存储路径下的nodes/0/indices/下即可完成数据迁移,重启es即可生效。
如需迁移整个集群的数据,将nodes/0/indices整个文件夹进行拷贝即可。