方式一:共享文件存储迁移
尽管可以使用 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 queryelasticsearch {hosts => "172.31.73.46:9205"index => "test_index"docinfo => truedocinfo_target => "[@metadata][doc]"slices => 5size => 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 => falsessl_certificate_verification => false}
}
$ bin/logstash -f config/pipeline.conf
方式三:S3迁移
- 部署minio
version: '2'services:minio:image: bitnami/minio:latestports:- '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 包括五个索引,这五个都会被恢复到我们集群里。