ES迁移到OpenSearch

方式一:共享文件存储迁移

尽管可以使用 repository-s3 插件直接将快照生成到 S3,但必须在每个节点上安装此插件,调整 opensearch.yml(如果使用的是 Elasticsearch 集群,则需要调整 elasticsearch.yml),重新启动每个节点,添加 AWS 凭证,最后拍摄快照。此插件是持续使用或迁移大型集群的绝佳选择。

  1. 要将共享文件系统用作快照存储库,请将其添加到:elasticsearch.yml和opensearch.yml(如果上传到s3则不需要)

path.repo: ["/mnt/snapshots"]

  1. 如果您使用的是 Docker 安装,请在启动群集之前将文件系统添加到 中的每个节点:docker-compose.yml
volumes:
  - /Users/jdoe/snapshots:/mnt/snapshots
  1. 然后使用 REST API 注册存储库:
PUT _snapshot/my-fs-repository
{
  "type": "fs",
  "settings": {
    "location": "/mnt/snapshots"
  }
}
  1. 如果成功

{ "acknowledged": true }

  1. 接下来有两种恢复方式:
  • 将备份上传到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迁移

  1. 部署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
  1. 在minio页面创建accesskey和secretkey
  2. 在opensearch和elasticsearch环境设置accesskey和secretkey
bin/opensearch-keystore add --stdin s3.client.default.access_key
bin/opensearch-keystore add --stdin s3.client.default.secret_key
  1. 修改opensearch.yml

设置endpoint和protocol

s3.client.default.endpoint: 172.31.73.46:9000
s3.client.default.protocol: http
  1. 下载s3插件

bin/opensearch-plugin install repository-s3

  1. 重启opensearch以及elasticsearch
  2. 在opensearch和elasticsearch中创建仓库
PUT _snapshot/my_backup 
{
    "type": "s3",
    "settings": {
        "bucket": "xxxxxx"
    }
}
  1. 在elasticsearch中指定备份索引
PUT _snapshot/my_backup/snapshot_1
{
    "indices": "index_1,index_2"
}
  1. 在opensearch中恢复数据
POST _snapshot/my_backup/snapshot_1/_restore

默认行为是把这个快照里存有的所有索引都恢复。如果 snapshot_1 包括五个索引,这五个都会被恢复到我们集群里。

你可能感兴趣的:(elasticsearch)