Elasticsearch 5.x 数据备份和恢复可由 snapshot 模块来完成,snapshot模块可以通过文件共享系统为单个索引或整个集群远程创建快照和进行数据恢复。
数据备份
索引快照时增量的。在创建快照前es会分析已有快照仓库,只对上次备份后更改的内容进行增量备份。在创建备份时同一个集群中只能运行一个es snapshot进程。
Es 基础命令
创建快照仓库
curl -X PUT "node1:9200/_snapshot/my_backup" -H 'Content-Type: application/json' -d'{ "type": "fs", "settings": { "location": "sys_backup" } }'
查看已注册的快照仓库
curl -X GET "node1:9200/_snapshot/my_backup"
可以使用逗号间隔多个仓库,星号通配符匹配所有仓库名字,下面示例返回仓库名以repo开头的和包含backup的仓库信息:
curl -X GET "node1:9200/_snapshot/repo*,*backup*"
获取所有已注册快照仓库,省略仓库名或者使用_all
curl -X GET "node1:9200/_snapshot"
或者
curl -X GET "node1:9200/_snapshot/_all"
查看快照仓库列表
curl -X GET "node1:9200/_cat/repositories?v"
准备工作
文件共享系统
nfs、hdfs?
共享文件系统仓库(“type”: “fs”)使用共享文件系统存快照,如果要注册共享文件系统仓库,必须在所有master和data节点挂载相同的共享文件系统到同一个路径位置。这个路径位置(或者它的一个父目录)必须在所有master和data节点的path.repo设置上注册。
假设共享文件系统挂载到 /data/backups/es_backup ,应该在elasticsearch.yml文件中添加如下配置:
path.repo: ["/data/backups", "/data/longterm_backups"]
创建快照仓库
所有节点重启之后,执行下面的命令注册名字为 es_backup 的共享文件系统仓库:
curl -X PUT 'node1:9200/_snapshot/es_backup?verify=false' -H 'Content-Type: application/json' -d'{ "type": "fs", "settings": { "location": "/mount/backups/es_backup", "compress": true, "max_restore_bytes_per_sec": 50m, "max_snapshot_bytes_per_sec": 30m } }'):
79736 篇文章