前提条件:
修改elasticsearch的配置文件elasticsearch.yml:
# 配置示例
path.repo: ["/data/es/snapshot"]
创建备份仓库:
# curl命令如下
curl -XPOST '192.168.0.100:9200/_snapshot/bro_backup' \
-H 'Content-Type: application/json' -d \
'{
"type": "fs",
"settings": {
"location": "/data/es/snapshot",
"compress": true,
"chunk_size": "1g",
"max_snapshot_bytes_per_sec": "50m",
"max_restore_bytes_per_sec": "50m"
}
}'
# max_snapshot_bytes_per_sec 和max_restore_bytes_per_sec 为了限制备份和恢复时的速度
# 如果新建仓库的时候报错 "reason": "failed to create blob container" access_denied_exception 请检查/data/es/snapshot文件夹权限
备份数据:
curl -XPUT "192.168.0.100:9200/_snapshot/bro_backup/ss_2022100905?wait_for_completion=true"
# 如果不希望快照作为后台进程运行,可以通过添加wait_for_completion=true参数,使其在前台运行,知道备份完成。
# 如果想备份部分索引,可以加上indices 参数
curl -XPUT http://192.168.0.100:9200/_snapshot/bro_backup/ss_2022100905 -d '
{
"indices": "index_1,index_2"
}'
中止备份:
#
curl -XDELETE http://192.168.0.100:9200/_snapshot/bro_backup/ss_2022100905
查看备份信息:
#
curl -XGET http://192.168.0.100:9200/_snapshot/bro_backup/ss_2022100905
恢复数据:
恢复前准备:
将备份数据打包传到新机器上,并解压到/data/es/snapshot目录下
1. 修改配置
path.repo:["/data/backup/elasticsearch"],
2. 创建备份仓库
curl -XPOST 'http://192.168.0.200:9200/_snapshot/bro_backup' \
-H 'Content-Type: application/json' \
-d '{
"type": "fs",
"settings": {
"location": "/data/es/snapshot",
"compress": true,
"chunk_size": "1g",
"max_snapshot_bytes_per_sec": "50m",
"max_restore_bytes_per_sec": "50m"
}
}'
3. 恢复数据
curl -XPOST '192.168.0.200:9200/_snapshot/bro_backup/ss_20220905/_restore' \
-H 'Content-Type: application/json' \
-d'{ "ignore_unavailable": true, "include_global_state": false }'
如果只想恢复某些分片的数据,还可以在json参数里加{"indices": "game_info"},以指定只恢复game_info分片数据。
4. 查看恢复的分片数据
curl '192.168.0.200:9200/_cat/indices?v'