方式一:共享文件存储迁移
尽管可以使用 repository-s3 插件直接将快照生成到 S3,但必须在每个节点上安装此插件,调整 opensearch.yml(如果使用的是 Elasticsearch 集群,则需要调整 elasticsearch.yml),重新启动每个节点,添加 AWS 凭证,最后拍摄快照。此插件是持续使用或迁移大型集群的绝佳选择。
- 要将共享文件系统用作快照存储库,请将其添加到:elasticsearch.yml和opensearch.yml(如果上传到s3则不需要)
path.repo: ["/mnt/snapshots"]
- 如果您使用的是 Docker 安装,请在启动群集之前将文件系统添加到 中的每个节点:docker-compose.yml
volumes:
- /Users/jdoe/snapshots:/mnt/snapshots
- 然后使用 REST API 注册存储库:
PUT _snapshot/my-fs-repository
{
"type": "fs",
"settings": {
"location": "/mnt/snapshots"
}
}
- 如果成功
{ "acknowledged": true }
- 接下来有两种恢复方式:
- 将备份上传到s3上然后进行恢复
- 如果使用的是docker且es和opensearch挂载了同一块数据卷,那么可以在opensearch中创建存储库,然后恢复。
方式二:logstash迁移
如果使用的是elastic的logstash需要下载opensearch插件。download
如果使用opensearch构建的logstash已经包含opensearch插件。download
logstash的pipeline配置:
input {
# Read all documents from Elasticsearch matching the given query
elasticsearch {
hosts => "172.31.73.46:9205"
index => "test_index"
docinfo => true
docinfo_target => "[@metadata][doc]"
slices => 5
size => 5000
}
}
filter {
# 去掉一些Logstash自己加的字段。
mutate {
remove_field => ["@timestamp", "@version"]
}
}
output {
opensearch {
hosts => ["172.31.73.46:9200"]
index => "opensearch-logstash-test"
document_type => "%{[@metadata][doc][_type]}"
document_id => "%{[@metadata][doc][_id]}"
#user => "admin"
#password => "admin"
ssl => false
ssl_certificate_verification => false
}
}
$ bin/logstash -f config/pipeline.conf
方式三:S3迁移
- 部署minio
version: '2'
services:
minio:
image: bitnami/minio:latest
ports:
- '9000:9000'
- '9001:9001'
volumes:
- 'minio_data:/data'
environment:
- MINIO_ROOT_USER=minio-root-user
- MINIO_ROOT_PASSWORD=minio-root-password
- MINIO_SKIP_CLIENT=yes
# - MINIO_SERVER_ACCESS_KEY=minio-access-key
# - MINIO_SERVER_SECRET_KEY=minio-secret-key
volumes:
minio_data:
driver: local
- 在minio页面创建accesskey和secretkey
- 在opensearch和elasticsearch环境设置accesskey和secretkey
bin/opensearch-keystore add --stdin s3.client.default.access_key
bin/opensearch-keystore add --stdin s3.client.default.secret_key
- 修改opensearch.yml
设置endpoint和protocol
s3.client.default.endpoint: 172.31.73.46:9000
s3.client.default.protocol: http
- 下载s3插件
bin/opensearch-plugin install repository-s3
- 重启opensearch以及elasticsearch
- 在opensearch和elasticsearch中创建仓库
PUT _snapshot/my_backup
{
"type": "s3",
"settings": {
"bucket": "xxxxxx"
}
}
- 在elasticsearch中指定备份索引
PUT _snapshot/my_backup/snapshot_1
{
"indices": "index_1,index_2"
}
- 在opensearch中恢复数据
POST _snapshot/my_backup/snapshot_1/_restore
默认行为是把这个快照里存有的所有索引都恢复。如果 snapshot_1 包括五个索引,这五个都会被恢复到我们集群里。