elasticsearch snapshot快照备份到minio对象存储S3 —— 筑梦之路

本文介绍了如何使用Docker部署MinIO作为对象存储服务,并配置Elasticsearch的S3插件进行数据备份和恢复。通过创建MinIO用户和桶,安装Elasticsearch的S3插件,设置访问密钥,配置快照仓库,以及设定快照策略,确保了数据的安全性和可恢复性。
摘要由CSDN通过智能技术生成

环境说明

minio 最新版

elasticsearch 7.9

1. docker部署minio对象存储服务

# 单机版docker-compose.yml

version: '3'
services:
  minio:
    image: minio/minio
    hostname: "minio"
    ports:
      - 9000:9000 # api 端口
      - 9001:9001 # 控制台端口
    environment:
      MINIO_ROOT_USER: admin           #管理后台用户名
      MINIO_ROOT_PASSWORD: admin123    #管理后台密码,最小8个字符
    volumes:
      - /docker/minio/data:/data               #映射当前目录下的data目录至容器内/data目录
      - /docker/minio/config:/root/.minio/     #映射配置目录
      - /etc/localtime:/etc/localtime:ro
    command: server --console-address ':9001' /data  #指定容器中的目录 /data
    privileged: true
    restart: always
docker-compose up -d

docker-compose ps

访问minio web:http://ip:9001 ,创建用户和桶,示例如下:

minio_username:   elasticsearch
minio_password:   XuGPEJWH2Hg9CixejOAkXpu0d
minio_bucket:     es-bucket

2. elasticsearch安装s3插件并配置

# 在线安装插件

elasticsearch-plugin install repository-s3

# 设置访问minio的信息

elasticsearch-keystore add s3.client.default.access_key   #输入elasticsearch
elasticsearch-keystore add s3.client.default.secret_key   #输入XuGPEJWH2Hg9CixejOAkXpu0d

# 配置elasticsearch.yml

s3.client.default.endpoint: 192.168.100.100:9000
s3.client.default.protocol: http

重启ES服务

3. elasticsearch配置快照仓库并测试验证

# 配置快照仓库

PUT _snapshot/my_backup 

{ 

    "type":"s3", 

    "settings":{ 

        "bucket":"es-bucket", 

        "protocol":"http", 

        "disable_chunked_encoding":"true", 

        "endpoint":"192.168.100.100:9000" 

    } 
} 
# 备份所有索引

PUT _snapshot/my_backup/test1?wait_for_completion=true&pretty

# 查看所有备份

GET _snapshot/my_backup/_all?pretty

# 删除快照

DELETE _snapshot/my_backup/snapshot_2 

注意:

用 API 删除快照很重要,而不能用其他机制(比如手动删除,或者用 S3 上的自动清除工具)。因为快照是增量的,有可能很多快照依赖于过去的段。delete API 知道哪些数据还在被更多近期快照使用,然后会只删除不再被使用的段。 

但是,如果你做了一次人工文件删除,你将会面临备份严重损坏的风险,因为你在删除的是可能还在使用中的数据。

------------------------------其他命令参考

#备份所有索引
curl -XPUT http:///localhost:9200/_snapshot/backup/snapshot_all

#备份部分索引
curl -XPUT 'http://localhost:9200/_snapshot/backup/index-201807' -H 'Content-Type: application/json' -d '{ "indices": "index-201807" }'

备份多个索引:
{
   "indices": "products,index_1,index_2",
   "ignore_unavailable": true,
   "include_global_state": false
}


#查看快照信息
curl -XGET 'http://localhost:9200/_snapshot/backup/_all'?pretty

#恢复索引数据:
curl -XPOST 'http://localhost:9200/_snapshot/backup/index-201807/_restore

#查看恢复状态:
GET http://localhost:9200/_recovery/index-201807
GET http://localhost:9200/_recovery/

#删除一个快照存储桶:
curl -XDELETE localhost:9200/_snapshot/backup/index-201807?pretty


# 查看所有的仓库
GET /_snapshot/_all
# 查看某一个具体的仓库的快照情况
GET /_snapshot/es_s3_repository/_all?pretty
# 列出所有当前正在运行的快照以及显示他们的详细状态信息
GET /_snapshot/_status?pretty
# 列出所有当前正在运行的快照以及显示他们的详细状态信息
GET /_snapshot/es_s3_repository/_status?pretty
# 查看指定快照的详细状态信息即使不是正在运行
GET /_snapshot/es_s3_repository/snapshot_2/_status?pretty
#删除某一个快照
DELETE /_snapshot/es_s3_repository/snapshot_2

----------------------------

# 推荐的s3权限,如有疑问可以移步官网:https://www.elastic.co/guide/en/elasticsearch/plugins/6.5/repository-s3-repository.html{
  "Statement": [
    {
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation",
        "s3:ListBucketMultipartUploads",
        "s3:ListBucketVersions"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::snap.example.com"
      ]
    },
    {
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:AbortMultipartUpload",
        "s3:ListMultipartUploadParts"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::snap.example.com/*"
      ]
    }
  ],
  "Version": "2012-10-17"
}

4.设置快照策略SLM

参考:elasticsearch snapshot快照指定多个索引并行备份——筑梦之路_筑梦之路的博客-CSDN博客

Minio是一个基于Apache License v2.0开源协议的工具存储服务,它兼容亚马逊S3云存储服务接口,适用于存储大容量非结构化的数据,比如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。\[1\] Minio具有以下功能特性: 1. Amazon S3兼容:Minio使用Amazon S3 v2/v4 API,可以使用Minio SDK、Minio Client、AWS SDK和AWS CLI访问Minio服务器。 2. 数据保护:Minio使用Minio Erasure Code来防止硬件故障,即使有一半以上的驱动器损坏,数据仍然可以恢复。 3. 高度可用:Minio服务器可以容忍分布式设置中高达(N/2)-1节点故障,并且可以配置在Minio和任意Amazon S3兼容服务器之间存储数据。 4. Lambda计算:Minio服务器通过兼容AWS SNS/SQS的事件通知服务触发Lambda功能,支持的目标包括消息队列(如Kafka、NATS、AMQP、MQTT)、Elasticsearch、Redis、Postgres和MySQL等数据库。 5. 加密和防篡改:Minio提供机密性、完整性和真实性保证的加密数据,使用AES-256-GCM、ChaCha20-Poly1305和AES-CBC支持服务器端和客户端加密。 6. 可对接后端存储:除了Minio自己的文件系统,还支持DAS、JBODs、NAS、Google云存储和Azure Blob存储等后端存储。\[1\] 您可以通过自建Minio对象存储集群的方式来满足对存储服务的需求,特别是在不使用云厂商提供的存储服务的情况下。\[1\] Minio的官方网站是https://min.io/,您可以在该网站上找到更多关于Minio的信息和文档。\[2\] \[3\] #### 引用[.reference_title] - *1* [Minio对象存储](https://blog.csdn.net/weixin_30575309/article/details/99263291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [minio对象存储](https://blog.csdn.net/qq_17522211/article/details/126867470)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值