es设置数据备份--新建仓库

前言

设置es备份首先要新建仓库,然后在kibana中配置,备份策略,多长时间备份一次等。

存储库的安装

创建存储库

必须先注册快照存储库,才能执行快照和还原的操作,如果多个集群同时注册同一个快照存储库,只有一个可以有写权限,其余集群设置为readonly模式

PUT /_snapshot/my_backup
{
  "type": "fs",
  "settings": {
    "location": "my_backup_location"
  }
}

直接插入会提示错误
直接发送put命令会提示错误,需要再进行以下几步的操作:

  1. 首先进入容器,创建存储库地址,并修改文件夹所有者
进入指定容器
docker exec -it es /bin/bash
创建存储库地址
mkdir backup
使用修改文件夹所有者
chown -R elasticsearch backup 

在这里插入图片描述

  1. 查看文件在docker中所属的路径
查看文件在docker中所属路径
pwd

在这里插入图片描述

  1. 修改elasticsearch.yml文件
    在这里插入图片描述
增加设置
path.repo: ["/usr/share/elasticsearch/backup"]

 

  1. 重启容器
docker restart es
  1. 再次发送PUT命令已经可以正常创建存储库了

在这里插入图片描述

{

    "type":"fs",

    "settings":{"location":"/usr/share/elasticsearch/backup"}

}

ps: 记得body中 选择json 数据格式

================以上仓库创建成功====================================

然后,可以在kibina中配置,备份策略,多长时间备份一次等操作。


支持以下设置:

  • location 快照的位置。必选
  • compress 打开快照文件的压缩。压缩仅应用于元数据文件(索引映射和设置)。数据文件未压缩。默认为true。
  • chunk_size 如果需要,可以在快照过程中将大文件分解为多个块。指定块尺寸的值,并且单元,例如:1GB,10MB,5KB,500B。默认为null(无限制的块大小)。
  • max_restore_bytes_per_sec 每个节点的恢复速度。默认为40mb每秒。
  • max_snapshot_bytes_per_sec 每个节点的快照速率。默认为40mb每秒。
  • readonly 使存储库为只读。默认为false。
  1. 查看存储库的信息
GET /_snapshot/my_backup

在这里插入图片描述

所有的存储库信息
GET /_snapshot
或者
GET /_snapshot/_all

只读网址存储库

URL存储库支持以下协议:“ http”,“ https”,“ ftp”,“ file”和“ jar”。URL与储存库http:, https:以及ftp:网址必须由指定允许的URL被列入白名单repositories.url.allowed_urls设置。此设置在主机,路径,查询和片段的位置支持通配符。例如:

repositories.url.allowed_urls: ["http://www.example.org/root/*", "https://*.mydomain.com/*?*#*"]

源存储库

通过源存储库,您可以创建最少的仅源快照,这些磁盘占用的磁盘空间最多减少50%。仅源快照包含存储的字段和索引元数据。它们不包括索引或doc值结构,并且在还原后不可搜索。恢复的唯一来源快照后,必须重新索引 数据到一个新的索引

PUT _snapshot/my_src_only_repository
{
  "type": "source",
  "settings": {
    "delegate_type": "fs",
    "location": "my_backup_location"
  }
}

存储库的验证

注册存储库后,需要在主节点和数据节点上对存储库进行验证,保证集群中存在的所有节点上都可以正常运行,会返回已经成功验证的节点列表,或验证失败的错误消息

PUT /_snapshot/my_unverified_backup?verify=false
{
  "type": "fs",
  "settings": {
    "location": "my_unverified_backup_location"
  }
}
或
POST /_snapshot/my_unverified_backup/_verify

在这里插入图片描述

执行快照操作

一个存储库可以包含同一个集群的许多快照,快照由集群中的唯一名称作为标识,创建一个名称为snapshot_1 的快照命令:

PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true

在这里插入图片描述
默认情况下回生成集群中所有打开和启动的索引,如果需要修改,使用一下的命令

PUT /_snapshot/my_backup/snapshot_2?wait_for_completion=true
{
  "indices": "index_1,index_2",
  "ignore_unavailable": true,
  "include_global_state": false
}
  • gnore_unavailable选项。将其设置为true将会导致快照创建期间不存在的索引被忽略。默认情况下,如果ignore_unavailable未设置选项并且缺少索引,则快照请求将失败。
  • include_global_state为false,可以防止将群集全局状态存储为快照的一部分。默认情况下,如果参与快照的一个或多个索引没有所有可用的主分片,则整个快照将失败。可以通过设置为partial来更改此行为true。

快照名称可以使用日期数学表达式自动导出,类似于创建新索引时。请注意,特殊字符需要进行URI编码。
例如,snapshot-2018.05.11可以使用以下命令来创建名称为like的当前日期的快照:

# PUT /_snapshot/my_backup/<snapshot-{now/d}>
PUT /_snapshot/my_backup/%3Csnapshot-%7Bnow%2Fd%7D%3E

索引快照过程是增量的。在制作索引快照的过程中,Elasticsearch分析已存储在存储库中的索引文件的列表,并仅复制自上次快照以来创建或更改的文件。这样可以将多个快照以紧凑的形式保存在存储库中。快照过程以非阻塞方式执行。可以继续对正在快照的索引执行所有索引和搜索操作。但是,快照代表的是时间点视图,在快照创建后添加进索引的记录,不会出现在快照中。

群集中任何时间都只能执行一个快照过程。在创建特定分片的快照时,该分片无法移动到另一个节点,这可能会干扰重新平衡过程和分配筛选。Elasticsearch等待快照完成后将分片移动到另一个节点

创建快照后,可以使用以下命令获取有关该快照的信息:

GET /_snapshot/my_backup/snapshot_1
  • IN_PROGRESS 快照当前正在运行。
  • SUCCESS 快照完成,所有分片已成功存储。
  • FAILED 快照以错误结束,无法存储任何数据。
  • PARTIAL 全局群集状态已存储,但至少一个分片的数据没有成功存储,在这种情况下,该部分应包含有关未正确处理的分片的更多详细信息。
  • INCOMPATIBLE 快照是使用旧版本的Elasticsearch创建的,因此与集群的当前版本不兼容。

在这里插入图片描述
与存储库类似,可以一次性查询有关多个快照的信息,并支持通配符:

GET /_snapshot/my_backup/snapshot_*,some_other_sn

查询所有
GET /_snapshot/my_backup/_all
如果某些快照不可用,该命令将失败。布尔参数ignore_unavailable可用于返回当前可用的所有快照。

查看正在运行的快照
GET /_snapshot/my_backup/_current

删除快照
DELETE /_snapshot/my_backup/snapshot_2

从存储库中删除快照后,Elasticsearch会删除与删除的快照相关联且未被其他任何快照使用的所有文件。如果在创建快照时执行了删除的快照操作,则快照过程将中止,并且将清理作为快照过程一部分创建的所有文件。因此,删除快照操作可用于取消误启动的长时间运行的快照操作。
可以使用以下命令注销存储库:

DELETE /_snapshot/my_backup

取消注册存储库后,Elasticsearch仅删除对该存储库存储快照的位置的引用。快照本身保持不变。

快照恢复

  1. 首先,拷贝出快照
# backup/. 会将backup的内容复制到外部backup文件夹中,如果不加/.就会导致backup文件夹到backup文件夹中变成  backup/backup/...
docker cp es:/usr/share/elasticsearch/backup/. /backup/

在这里插入图片描述

  1. 拷贝到本地打开看一下完全是看不懂
    在这里插入图片描述
    首先拷贝到第二台虚拟机中

在这里插入图片描述

  1. 重复一遍注册数据仓库的动作,创建仓库,查询无误
    在这里插入图片描述

  2. 拷贝快照文件夹至容器内部

docker cp /backup/. es:/usr/share/elasticsearch/backup/
  1. 查看是否拷贝成功
    在这里插入图片描述
  2. 先查看目前的ES中是否有数据
    在这里插入图片描述
  3. 进行恢复操作
POST /_snapshot/my_backup/snapshot_1/_restore

返回true
在这里插入图片描述

  1. 再进行查询操作,第一台ES的数据已经被恢复到第二台ES中
    在这里插入图片描述
    默认情况下,将还原快照中的所有索引,并且不还原群集状态 。通过使用还原请求主体中的indices和include_global_state选项,可以选择应该还原的索引以及允许还原全局群集​​状态。索引列表支持多索引语法。该rename_pattern 和rename_replacement选项也可用于使用正则表达式重命名索引。设置include_aliases为false防止别名与关联索引一起还原
POST /_snapshot/my_backup/snapshot_1/_restore
{
  "indices": "index_1,index_2",
  "ignore_unavailable": true,
  "include_global_state": true,
  "rename_pattern": "index_(.+)",
  "rename_replacement": "restored_index_$1"
}

还原时改变设置

在还原过程中,可以覆盖大多数索引设置。例如,以下命令将index_1还原索引而不创建任何副本

POST /_snapshot/my_backup/snapshot_1/_restore
{
  "indices": "index_1",
  "index_settings": {
    "index.number_of_replicas": 0
  },
  "ignore_index_settings": [
    "index.refresh_interval"
  ]
}

监控快照或还原的进度

有几种方法可以监视快照的进度并在进程运行时还原它们。这两个操作都支持wait_for_completion阻塞客户端直到操作完成。这是最简单的方法,可用于获取有关操作完成的通知。
也可以通过定期调用快照信息来监视快照操作:

GET /_snapshot/my_backup/snapshot_1

请注意,快照信息操作使用与快照操作相同的资源和线程池。因此,在对大型碎片进行快照时执行快照信息操作可能会导致快照信息操作在返回结果之前等待可用资源。在很大的碎片上,等待时间可能很长。
要获取有关快照的更多即时信息和完整信息,可以改为使用快照状态命令:

GET / _snapshot / my_backup / snapshot_1 / _status 

启动失败和纠错过程

在第一次进行配置后,启动失败,在此记录一下排错的过程

  1. 查看容器日志
查看指定容器最后100行的日志
docker logs --tail 100 es

在这里插入图片描述
日志显示没有backup文件夹的访问权限
需要导出日志文件,恢复配置后导入,才能继续启动

导出
docker cp 容器id:docker容器中配置文件路径  主机路径
docker cp es:/usr/share/elasticsearch/config/elasticsearch.yml /backup
删除配置 path.repo
导入
docker cp /backup/elasticsearch.yml es:/usr/share/elasticsearch/config/elasticsearch.yml 

重新导入配置文件后执行docker start es,启动正常
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
备份 Elasticsearch 索引可以通过 Elasticsearch 的 Snapshot API 来实现。Elasticsearch-head 是一个基于浏览器的 Elasticsearch 管理界面,它并不提供索引备份功能,但你可以使用 Elasticsearch-head 来检查索引的状态并执行备份操作。 以下是备份 Elasticsearch 索引的步骤: 1. 创建一个用于存储备份Elasticsearch 仓库。你可以使用本地文件系统或者远程文件系统(如 S3、Azure Blob 存储等)作为仓库。例如,使用本地文件系统作为仓库: ``` PUT /_snapshot/my_backup { "type": "fs", "settings": { "location": "/path/to/my/backup/directory" } } ``` 2. 在仓库中创建一个快照。以下示例将备份名为 `my_index_backup` 的索引: ``` PUT /_snapshot/my_backup/my_index_backup?wait_for_completion=true { "indices": "my_index", "ignore_unavailable": true, "include_global_state": false } ``` 其中,`wait_for_completion` 参数表示是否等待备份完成,`indices` 参数表示要备份的索引名称,`ignore_unavailable` 参数表示是否忽略不可用的索引,`include_global_state` 参数表示是否备份全局状态信息。 备份完成后,你可以使用 Elasticsearch-head 来检查备份状态: 1. 打开 Elasticsearch-head 界面,选择要备份的索引,点击 `Snapshots` 标签页。 2. 在 `Snapshots` 标签页中,你可以看到备份的状态和详细信息。 注意,备份索引可能会花费一定的时间和存储空间。建议在低峰期进行备份操作,并定期清理旧的备份文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值