elasticsearch快照存储到linux本地路径或分布式存储系统mioio

一、使用linux本地目录做快照存储

1.编辑 elasticsearch.yml 文件,添加以下配置:

bash 复制代码
path.repo: ["/path/to/your/backup/dir"]

2.创建一个文件系统类型的快照仓库

bash 复制代码
PUT /_snapshot/my_local_repository
{
  "type": "fs",
  "settings": {
    "location": "/path/to/your/backup/dir",
    "compress": true
  }
}


my_local_repository为仓库名称

3.创建快照

bash 复制代码
PUT /_snapshot/my_local_repository/snapshot_1
{
  "indices": "index_1,index_2",
  "ignore_unavailable": true,
  "include_global_state": false
}


PUT /_snapshot/my_local_repository/snapshot_1
{
  "indices": "*",
  "ignore_unavailable": true,
  "include_global_state": false
}

snapshot_1为快照名称

4.恢复快照

bash 复制代码
POST /_snapshot/my_local_repository/snapshot_1/_restore
{
  "indices": "index_1"
}

二、使用minio本地目录做快照存储

1.安装 repository-s3 插件

bash 复制代码
./elasticsearch-plugin install repository-s3

2.验证插件是否安装成功

bash 复制代码
./elasticsearch-plugin list

3.在 elasticsearch.yml 中配置 S3 仓库: 添加以下内容来启用 S3 仓库:

bash 复制代码
s3.client.default.endpoint: "http://192.168.43.185:9000"
s3.client.default.access_key: "minioadmin"
s3.client.default.secret_key: "minioadmin"
s3.client.default.protocol: "http"

4.将 access_key 和 secret_key 添加到 keystore

bash 复制代码
./elasticsearch-keystore add s3.client.default.access_key
./elasticsearch-keystore add s3.client.default.secret_key


s3.client.default.access_key: 登录账户
s3.client.default.secret_key:登录密码

5.验证 keystore 配置

bash 复制代码
./elasticsearch-keystore list

6.删除错误的 keystore 项

bash 复制代码
./elasticsearch-keystore remove add

7.创建存储库

bash 复制代码
PUT /_snapshot/es_snapshot_repository
{
  "type": "s3",
  "settings": {
    "bucket": "es-snap-shot",
    "endpoint": "http://192.168.43.185:9000",
    "protocol": "http",
    "region": "us-east-1",
    "compress": true
  }
}

es_snapshot_repository : 仓库名称

8.创建快照

bash 复制代码
PUT /_snapshot/es_snapshot_repository /snapshot_1
{
  "indices": "index_1,index_2",  // 指定要备份的索引
  "ignore_unavailable": true,    // 忽略不可用的索引
  "include_global_state": false // 是否包括集群全局状态
}


 PUT /_snapshot/es_snapshot_repository /snapshot2
{
  "indices": "*",  // 指定要备份的索引
  "ignore_unavailable": true,    // 忽略不可用的索引
  "include_global_state": false // 是否包括集群全局状态
}

ignore_unavailable 是一个可选参数,指定是否忽略那些在快照创建时不可用的索引。
include_global_state 指定是否包括集群的全局状态,如模板和集群设置。
  1. 查看快照状态
bash 复制代码
GET /_snapshot/es_snapshot_repository /snapshot_1/_status

10.列出所有快照

如果想查看在 es_snapshot_repository 仓库中所有的快照,可以使用:

bash 复制代码
GET /_snapshot/es_snapshot_repository /_all

11.恢复快照

bash 复制代码
POST /_snapshot/es_snapshot_repository /snapshot_1/_restore
{
  "indices": "index_1,index_2",  // 指定要恢复的索引
  "ignore_unavailable": true,    // 忽略不可用的索引
  "include_global_state": false // 是否恢复集群全局状态
}
  1. 删除快照
bash 复制代码
DELETE /_snapshot/es_snapshot_repository /snapshot_1
  1. 删除快照仓库
bash 复制代码
DELETE /_snapshot/es_snapshot_repository 

minio快照仓库长这样:

要把minio 的 bucket的权限改为public

三、定时任务自动快照

1.配置 SLM 策略

bash 复制代码
PUT _slm/policy/daily_snapshots
{
  "schedule": "0 30 1 * * ?",  // Cron 表达式,表示每天凌晨 1:30 进行快照
  "name": "<daily-snap-{now/d}>",
  "repository": "minio_backup",
  "config": {
    "indices": ["index_1", "index_2"],  // 需要备份的索引
    "ignore_unavailable": true,
    "include_global_state": false
  },
  "retention": {
    "expire_after": "30d",  // 快照保留 30 天后自动删除
    "min_count": 5,         // 保留至少 5 个快照
    "max_count": 50         // 最多保留 50 个快照
  }
}


PUT _slm/policy/daily_snapshots
{
  "schedule": "0 30 1 * * ?",  // Cron 表达式,表示每天凌晨 1:30 进行快照
  "name": "<daily-snap-{now/d}>",
  "repository": "minio_backup",
  "config": {
    "indices": ["_all"],  // 备份所有索引
    "ignore_unavailable": true,
    "include_global_state": false
  },
  "retention": {
    "expire_after": "30d",  // 快照保留 30 天后自动删除
    "min_count": 5,         // 保留至少 5 个快照
    "max_count": 50         // 最多保留 50 个快照
  }
}

daily_snapshots 为策略名称

2.查看 SLM 策略

bash 复制代码
GET _slm/policy

3.手动触发 SLM 策略

如果需要立即测试或手动触发策略,可以使用以下命令:

bash 复制代码
POST _slm/policy/daily_snapshots/_execute

daily_snapshots 为策略名称

4.删除特定的 SLM 策略

bash 复制代码
DELETE _slm/policy/daily_snapshots

daily_snapshots 为策略名称

四、新搭建 elasticsearch 集群 如何使用 minio集群数据恢复

在新搭建的 Elasticsearch 集群中,使用以下命令注册 MinIO 作为快照存储库:

bash 复制代码
PUT /_snapshot/es_snapshot_repository
{
  "type": "s3",
  "settings": {
    "bucket": "es-snap-shot",
    "endpoint": "http://192.168.43.185:9000",
    "protocol": "http",
    "region": "us-east-1",
    "compress": true
  }
}

其他步骤正常恢复即可

相关推荐
东方佑1 小时前
自动调整PPT文本框内容:防止溢出并智能截断文本
linux·运维·powerpoint
zhougl9962 小时前
html处理Base文件流
linux·前端·html
泥土编程3 小时前
kubekey -实现懒人一键部署K8S集群
linux·运维
wirepuller_king6 小时前
创建Linux虚拟环境并远程连接,finalshell自定义壁纸
linux·运维·服务器
这个懒人6 小时前
深入解析Translog机制:Elasticsearch的数据守护者
数据库·elasticsearch·nosql·translog
在野靡生.7 小时前
Ansible(1)—— Ansible 概述
linux·运维·ansible
风123456789~7 小时前
【Linux运维】查询指定日期的上月
linux·运维·服务器
我没想到原来他们都是一堆坏人7 小时前
利用vmware快速安装一个可以使用的centos7系统
linux·虚拟机
x-cmd8 小时前
[250331] Paozhu 发布 1.9.0:C++ Web 框架,比肩脚本语言 | DeaDBeeF 播放器发布 1.10.0
android·linux·开发语言·c++·web·音乐播放器·脚本语言
weitinting8 小时前
Ali linux 通过yum安装redis
linux·redis