集群设置快照,需要把各节点间的快照仓库进行文件间的同步共享,es集群各节点间实现文件同步共享:
mount -t nfs ip:/home/backup /home/backup
mkdir /home/backup
修改权限
chown -R [用户]:[组] 文件夹 例:chown -R es:es /home/backup
修改集群中所有ES服务 config目录下elasticsearch.yml文件,添加如下:
path.repo: ["/home/backup"]
ES 8.0以上版本配置如下:
path:
repo:
-/home/backup
然后重启集群,必须保证所有集群服务都停止后再启动集群。
1.4使用SLM自动备份
1.4.1 注册存储库
注册一个存储仓库,仓库名称为:backup
PUT /_snapshot/backup
{
"type": "fs",
"settings": {
"location": "/home/backup"
}
}
可以用命令来执行,后面所有操作都可以使用ES Head或者命令来执行
curl -XPUT -u elastic:123456 \
-H 'Content-Type: application/json' \
http://IP:PORT/_snapshot/backup -d \
'{"type": "fs", "settings": {"location": "/home/backup"}}'
(-u 后面是用户名:密码)
支持以下设置:
查询已注册的存储库信息:
GET /_snapshot
GET /_snapshot/_all
GET /_snapshot/backup
删除快照存储库:
DELETE /_snapshot/backup
1.4.2 设置快照策略
这里创建个策略名称为nightly-snapshots,每天凌晨一点半执行快照操作。
PUT /_slm/policy/nightly-snapshots
{
"schedule": "0 30 1 * * ?",
"name": "<nightly-snap-{now/d}>",
"repository": "backup",
"config": {
"indices": ["*"]
},
"retention": {
"expire_after": "30d",
"min_count": 5,
"max_count": 50
}
}
参数解释:
schedule: 快照执行时间,corn表达式语法
name: 快照名称,支持表达式,参考:索引名称中的日期数学支持 |Elasticsearch Guide [7.7] |弹性的https://www.elastic.co/guide/en/elasticsearch/reference/7.7/date-math-index-names.html#date-math-index-names
repository:快照存储仓库
config:要用于快照请求的配置
indeices: 快照中要包含哪些索引:*代表所有索引,
time_zone:指定时区
retention: 可选保留策略:
expire_after将快照保留时间,
min_count:无论使用期限如何,最少保留快照数
max_coun:无论使用期限如何,最多保留快照数
测试快照策略:(手动运行SLM策略)
POST /_slm/policy/nightly-snapshots/_execute
查看快照策略执行情况:
GET /_slm/policy/nightly-snapshots?human
仅返回最近的成功和失败,但所有策略执行都记录在索引中。响应还会显示策略计划下一步执行的时间。(PS:响应将显示策略是否成功启动快照。但是,这并不能保证快照已成功完成。例如,如果在复制文件时与远程存储库的连接丢失,则启动的快照可能会失败。)
查看策略状态:
GET _slm/stats
响应参数解释:
retention_runs:运行保留的次数
retention_failed:运行时保留失败的次数
retention_timed_out:保留达到时间限制且必须在删除所有符合条件的快照之前停止的次数slm.retention_duration
retention_deletion_time:按保留过程删除快照所花费的总时间
snapshots_deleted:“每日快照”策略创建的已删除快照数
snapshot_deletion_failures:未能删除的快照数
total_snapshots_deleted:在所有策略中删除的快照总数
total_snapshot_deletion_failures:所有策略中的快照删除失败总数
查看指定策略:
GET _slm/policy/nightly-snapshots
响应包括:
﹡下一个计划的策略执行。
﹡策略上次成功启动快照进程的时间(如果适用)。成功启动并不能保证快照已完成。
﹡上次策略执行失败的时间(如果适用)以及关联的错误。
删除快照:
DELETE /_snapshot/存储库的名称/策略名称(支持通配符)
1.5安全性和SLM(可以不设置)
启用 Elasticsearch 安全功能时,两个内置的集群权限控制对 SLM 操作的访问:
manage_slm:允许用户执行所有 SLM 操作,包括创建和更新策略以及启动和停止 SLM。
read_slm:允许用户执行所有只读 SLM 操作,如获取策略和检查 SLM 状态。
cluster:admin/snapshot/*:允许用户拍摄和删除任何索引的快照,无论他们是否有权访问该索引。
要授予创建和管理 SLM 策略和快照所需的权限,您可以设置具有和集群权限以及对 SLM 历史记录索引的完全访问权限的角色。manage_slmcluster:admin/snapshot/*
例如,以下请求创建一个角色:slm-admin
POST /_security/role/slm-admin
{
"cluster": ["manage_slm", "cluster:admin/snapshot/*"], ##权限
"indices": [
{
"names": [".slm-history-*"], ##索引名称
"privileges": ["all"] ##索引权限
}
]
}
例如,以下请求创建一个角色:slm-read-only对 SLM 策略和快照历史记录的只读访问权限
POST /_security/role/slm-read-only
{
"cluster": ["read_slm"], ##权限
"indices": [
{
"names": [".slm-history-*"], ##索引名称
"privileges": ["read"] ##索引权限
}
]
}
1.6还原快照
1.6.1先决条件
要使用 Kibana 的快照和还原功能,您必须具有以下权限:
群集权限:monitor manage_slm cluster:admin/snapshot cluster:admin/repository
索引权限:在索引上all monitor
快照和群集版本必须兼容;您只能将快照还原到具有选定主节点的正在运行的集群。快照的存储库必须已注册并可供集群使用。要还原快照,集群的全局元数据必须是可写的。确保没有任何阻止写入的群集块。还原操作将忽略索引块。
1.6.2 还原快照
获取快照信息:
GET /_snapshot/仓库名称/快照名称
获取所有快照信息:
GET /_snapshot/仓库名称/_all
state状态值解释:
IN_PROGRESS:快照当前正在运行。
SUCCESS:快照已完成,所有分片均已成功存储。
FAILED:快照以错误结束,无法存储任何数据。
PARTIAL:已存储全局群集状态,但至少一个分片的数据未成功存储。本例中的部分应包含有关未正确处理的分片的更多详细信息。
INCOMPATIBLE:快照是使用旧版本的 Elasticsearch 创建的,因此与当前版本的集群不兼容。
删除快照:
DELETE /_snapshot/仓库名称/快照名称
从存储库中删除快照时,Elasticsearch 会删除与已删除快照关联且未被任何其他快照使用的所有文件。如果在创建快照时执行已删除的快照操作,则快照过程将中止,并且作为快照过程的一部分创建的所有文件都将被清除。因此,删除快照操作可用于取消错误启动的长时间运行的快照操作。
恢复快照:
POST /_snapshot/仓库名称/快照名称/_restore
默认情况下,将还原快照中的所有索引,并且不会还原群集状态。可以选择应还原的索引,并允许使用和 还原请求正文中的选项还原全局群集状态。索引列表支持多索引语法。和 选项还可用于在还原时使用支持引用原始文本的正则表达式重命名索引,如此处所述。设置为 可防止别名与关联的索引一起恢复
POST /_snapshot/仓库名称/快照名称/_restore
{
"indices": "index_1,index_2",
"ignore_unavailable": true,
"include_global_state": true,
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1"
}
可以在正常运行的群集上执行还原操作。但是,现有索引只有在关闭且具有与快照中的索引相同数量的分片时才能还原。还原操作会自动打开已还原的索引(如果它们已关闭),如果它们不存在于集群中,则创建新索引。已关闭索引在集群上几乎没有开销(维护其元数据除外),并且会被阻止进行读/写操作。
打开或关闭索引
POST /索引名称/_close
POST /索引名称/_open
1.6.3快照状态查看
可以使用以下命令获取当前正在运行的快照及其详细状态信息的列表:
GET /_snapshot/_status
获取指定存储库状态:
GET /_snapshot/存储仓库名称/_status
获取指定存储库快照状态:
GET /_snapshot/存储仓库名称/快照名称/_status
还支持多个 ID:
GET /_snapshot/存储仓库名称/快照名称1,快照名称2/_status
停止当前正在运行的快照和还原操作:
快照和还原框架一次只允许运行一个快照或一个还原操作。如果当前正在运行的快照被错误地执行,或者花费的时间异常长,则可以使用快照删除操作终止它。快照删除操作会检查已删除的快照当前是否正在运行,如果正在运行,则删除操作会在从存储库中删除快照数据之前停止该快照。
DELETE /_snapshot/存储仓库名称/快照名称