文章目录
ES提供快照和恢复功能,我们可以在远程文件系统仓库(比如共享文件系统、S3、HDFS等)中单独给部分索引或者整个集群创建快照。这些快照对备份非常有用,它们能相对较快地被恢复。但是,快照只能被恢复到可以读取他们的ES版本中:
- 在5.x创建的索引的快照可以被恢复到6.x;
- 在2.x创建的索引的快照可以被恢复到5.x;
- 在1.x创建的索引的快照可以被恢复到2.x;
相反,在1.x中创建的索引快照不能被恢复到5.x或者6.x,在2.x中创建的索引快照不能被恢复到6.x中。
快照是增量的,可以包含在多个ES版本中创建的索引。如果在一个快照中的任何索引时在不兼容的ES版本中创建的,你将不能恢复该快照。
在升级前备份数据的时候,如果快照中的索引是在与你升级版本不兼容的ES版本中创建的,那么这些快照将不能被恢复。
如果你的情况是需要恢复一个与你当前运行的集群版本不兼容的索引快照,你可以先恢复到最新的兼容版本中,然后在当前版本中使用 reindex-from-remote 重建索引。远程Reindexing只能在源索引source为enabled的情况下进行。获取并重建数据索引的时间可能比简单恢复快照要长的多。如果你的数据量较大,建议先用一部分数据测试远程reindex,以便了解需要花费的时间。
Repositories
必须先注册一个快照仓库,然后才能进行快照和恢复操作。建议为每个主版本创建一个新快照仓库。有效的仓库设置取决于仓库类型。
如果多个集群注册同一个快照仓库,只有一个集群可以对仓库进行写访问,其他所有集群应该设置该仓库为 readonly 模式。
跨主版本时快照格式可能会改变,所以不同版本的集群写同一个快照仓库,某个版本写的快照可能对其他版本不可见,仓库快照也存在问题。ES不支持仓库对所有集群设置为readonly,其中一个集群和不同主版本的多个集群一起工作。
1. 注册创建快照仓库
curl -X PUT "localhost:9200/_snapshot/my_backup" -H 'Content-Type: application/json' -d'
{
"type": "fs",
"settings": {
"location": "my_backup_location"
}
}
'
2. 查看已注册快照仓库
curl -X GET "localhost:9200/_snapshot/my_backup"
可以使用逗号间隔多个仓库,星号通配符匹配仓库名字,下面示例返回仓库名以repo开头的和包含backup的仓库信息
curl -X GET "localhost:9200/_snapshot/repo*,*backup*"
获取所有已注册快照仓库,省略仓库名或者使用_all
curl -X GET "localhost:9200/_snapshot"
或者
curl -X GET "localhost:9200/_snapshot/_all"
3. 查看快照仓库列表
# curl -X GET "10.17.4.200:9200/_cat/repositories?v"
id type
elasticsearch_backup fs
test fs
4. Shared File System Repository
共享文件系统仓库(“type”: “fs”)使用共享文件系统存快照,如果要注册共享文件系统仓库,必须在所有master和data节点挂载相同的共享文件系统到同一个路径位置。这个路径位置(或者它的一个父目录)必须在所有master和data节点的path.repo设置上注册。
假设共享文件系统挂载到 /mount/backups/my_fs_backup_location,应该在elasticsearch.yml文件中添加如下配置:
path.repo: ["/mount/backups", "/mount/longterm_backups"]
The path.repo setting supports Microsoft Windows UNC paths as long as at least server name and share are specified as a prefix and back slashes are properly escaped:
path.repo: ["\\\\MY_SERVER\\Snapshots"]
所有节点启动之后,执行下面的命令注册名字为my_fs_backup的共享文件系统仓库:
curl -X PUT "localhost:9200/_snapshot/my_fs_backup" -H 'Content-Type: application/json' -d'
{
"type": "fs",
"settings": {
"location": "/mount/backups/my_fs_backup_location",
"compress&#