Skip to content

OSS快照迁移

zhichen edited this page Mar 5, 2018 · 5 revisions

OSS快照迁移

自建ES迁移至阿里云ES

自建ES安装elasticsearch-repository-oss插件

购买OSS实例并创建和阿里云ECS相同region的bucket

在自建ES创建仓库

PUT _snapshot/my_backup 
{
    "type": "oss",
    "settings": {
        "endpoint": "xxxx", <1>
        "access_key_id": "xxxx", 
        "secret_access_key": "xxxxxx", 
        "bucket": "xxxxxx", <2>
        "compress": true
    }
}

快照指定索引

默认行为是备份所有打开的索引。不过如果你在用 Kibana,你不是真的想要把所有诊断相关的 .kibana 索引也备份起来。可能你就压根没那么大空间备份所有数据。

这种情况下,你可以在快照你的集群的时候指定备份哪些索引:

PUT _snapshot/my_backup/snapshot_1
{
    "indices": "index_1,index_2"
}

这个快照命令现在只会备份 index1index2 了。

在阿里云ES上创建相同仓库my_backup

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的内网地址

在阿里云ES上恢复快照

一旦你备份过了数据,恢复它就简单了:只要在你希望恢复回集群的快照 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