阿里云ElasticSearch数据同步至自建ElasticSearch
OSS 快照迁移
购买OSS实例并创建bucket
在阿里云ElasticSearch上创建仓库my_backup
PUT _snapshot/my_backup/
{
"type": "oss",
"settings": {
"endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
"access_key_id": "xxxx",
"secret_access_key": "xxxxxx",
"bucket": "xxxxxx",
"compress": true,
"chunk_size": "500mb",
"base_path": "snapshot/"
}
}
| 参数 | 说明 |
|---|---|
| endpoint | OSS Bucket的内网访问域名。获取方式,请参见访问域名和数据中心。 |
| access_key_id | 用于标识用户。获取方式,请参见获取AccessKey。 |
| secret_access_key | 用于验证用户的密钥。获取方式,请参见获取AccessKey。 |
| bucket | OSS Bucket的名称,需要一个已经存在的Bucket。获取方式,请参见创建存储空间。 |
| compress | 打开快照文件的压缩功能。 |
| true: | 打开压缩功能,仅应用于元数据文件(索引映射和设置)。 |
| false(默认值): | 不打开压缩功能,数据文件未压缩。 |
| chunk_size | 当您上传的数据非常大时,配置此参数可以限制快照过程中分块的大小。超过这个大小,数据将会被分块上传到OSS中。 |
| base_path | 仓库的起始位置,默认为根目录 |
快照指定索引
默认行为是备份所有打开的索引。不过如果你在用 Kibana,你不是真的想要把所有诊断相关的 .kibana 索引也备份起来。可能你就压根没那么大空间备份所有数据。
这种情况下,你可以在快照你的集群的时候指定备份哪些索引:
PUT _snapshot/my_backup/snapshot_1
{
"indices": "index_1,index_2"
}
这个快照命令现在只会备份 index1 和 index2 了。
获取仓库信息
-
获取所有仓库信息
GET _snapshot -
获取指定仓库信息
GET _snapshot/my_backup
创建快照
-
为全部索引创建快照
PUT _snapshot/my_backup/snapshot_1以上命令会为所有打开的索引创建名称为snapshot_1的快照,并保存到my_backup仓库中。该命令会立刻返回,并在后台执行备份任务。如果您希望任务执行完成后再返回,可通过添加wait_for_completion实现。该参数会阻塞调用直到备份完成,如果是大型快照,需要很长时间才能返回。
PUT _snapshot/my_backup/snapshot_1?wait_for_completion=true
在自己ElasticSearch上恢复快照
一旦你备份过了数据,恢复它就简单了:只要在你希望恢复回集群的快照 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 。
在自建Es上安装oss插件
-
下载阿里云oss插件
wget https://github.com/aliyun/elasticsearch-repository-oss/releases/download/v7.4.0/elasticsearch-repository-oss-7.4.0.1.zip -
安装阿里云oss插件
mkdir -pv /usr/local/elasticsearch unzip elasticsearch-repository-oss-7.4.0.1.zip -d /usr/local/elasticsearch/plugs/ -
重启elasticsearch
ps aux |grep elas|awk '{print $2}'|xargs kill -9 - su - elasticsearch && /usr/local/elasticsearch/bin/elastricsezrch -d
在自建Es上创建相同仓库my_backup
PUT _snapshot/my_backup/
{
"type": "oss",
"settings": {
"endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
"access_key_id": "xxxx",
"secret_access_key": "xxxxxx",
"bucket": "xxxxxx",
"compress": true,
"chunk_size": "500mb",
"base_path": "snapshot/"
}
}
从快照恢复
-
恢复所有索引(除.开头的系统索引)
POST _snapshot/my_backup/snapshot_1/_restore {"indices":"*,-.monitoring*,-.security*,-.kibana*","ignore_unavailable":"true"}