-
Notifications
You must be signed in to change notification settings - Fork 36
OSS快照迁移
zhichen edited this page Mar 5, 2018
·
5 revisions
- 安装插件 download pre-build package from here: https://github.com/zhichen/elasticsearch-repository-oss/releases/download/v5.5.3/elasticsearch-repository-oss-5.5.3.zip
unzip plugin to folder your-es-root/plugins/ - 非5.5.3需要修改plguins/plugin-descriptor.properties中的elasticsearch.version和version,改为自己es集群的版本
- 重启es
PUT _snapshot/my_backup
{
"type": "oss",
"settings": {
"endpoint": "xxxx", <1>
"access_key_id": "xxxx",
"secret_access_key": "xxxxxx",
"bucket": "xxxxxx", <2>
"compress": true
}
}
- <1> 本处的OSS, 要求和你的elasticsearch集群在同一个region中, 这里的endpoint填的是这个region对应的地址 ,具体参考 https://help.aliyun.com/document_detail/31837.html?spm=5176.doc31922.6.577.YxqZYt
- <2> 需要一个已经存在的OSS bucket
默认行为是备份所有打开的索引。不过如果你在用 Kibana,你不是真的想要把所有诊断相关的 .kibana
索引也备份起来。可能你就压根没那么大空间备份所有数据。
这种情况下,你可以在快照你的集群的时候指定备份哪些索引:
PUT _snapshot/my_backup/snapshot_1
{
"indices": "index_1,index_2"
}
这个快照命令现在只会备份 index1
和 index2
了。
PUT _snapshot/my_backup
{
"type": "oss",
"settings": {
"endpoint": "xxxx", <1>
"access_key_id": "xxxx",
"secret_access_key": "xxxxxx",
"bucket": "xxxxxx", <2>
"compress": true
}
}
- 注意 这里的endpoint要填该region的内网地址
一旦你备份过了数据,恢复它就简单了:只要在你希望恢复回集群的快照 ID 后面加上 _restore
即可:
POST _snapshot/my_backup/snapshot_1/_restore
默认行为是把这个快照里存有的所有索引都恢复。如果 snapshot_1
包括五个索引,这五个都会被恢复到我们集群里。和 snapshot
API 一样,我们也可以选择希望恢复具体哪个索引。
还有附加的选项用来重命名索引。这个选项允许你通过模式匹配索引名称,然后通过恢复进程提供一个新名称。如果你想在不替换现有数据的前提下,恢复老数据来验证内容,或者做其他处理,这个选项很有用。让我们从快照里恢复单个索引并提供一个替换的名称:
POST /_snapshot/my_backup/snapshot_1/_restore
{
"indices": "index_1", <1>
"rename_pattern": "index_(.+)", <2>
"rename_replacement": "restored_index_$1" <3>
}
- <1> 只恢复
index_1
索引,忽略快照中存在的其余索引。 - <2> 查找所提供的模式能匹配上的正在恢复的索引。
- <3> 然后把它们重命名成替代的模式。
这个会恢复 index_1
到你及群里,但是重命名成了 restored_index_1
。