引言
在 Elasticsearch 中,有效地管理快照和使用快照生命周期管理(SLM)是确保数据备份和恢复的关键步骤。本节将提供删除快照、配置 SLM 策略以及执行自动备份的实用操作和示例。通过这些步骤可以更好地保护数据,应对意外数据丢失或系统故障。
删除快照
通过删除快照 API,您可以从存储库中删除指定的快照。以下是删除单个或多个快照的示例:
代码语言:shell复制curl -X DELETE -u undefined:$ESPASS "localhost:9200/_snapshot/my_backup/snapshot_1?pretty"
curl -X DELETE -u undefined:$ESPASS "localhost:9200/_snapshot/my_backup/snapshot_2,snapshot_3?pretty"
curl -X DELETE -u undefined:$ESPASS "localhost:9200/_snapshot/my_backup/snap*?pretty"
如果在创建快照时发生错误,您可以使用此 API 取消错误启动的快照操作。
SLM:管理快照生命周期
快照生命周期管理(SLM)允许您自动执行快照,并设置了时间、频率和保留策略。通过 SLM CRUD API,您可以构建和管理快照策略。以下是 SLM 的一些关键操作:
- 停止和重新启动 SLM: 您可以暂时暂停自动备份,以执行升级或其他维护操作。
使用 SLM 自动执行备份的教程
1. 创建存储库
首先,您需要创建一个存储库来保存快照。以下是创建存储库的示例:
代码语言:shell复制curl -X PUT -u undefined:$ESPASS "localhost:9200/_snapshot/my_backup?pretty" -H 'Content-Type: application/json' -d'
{
"type": "fs",
"settings": {
"location": "my_autobackup_location"
}
}
'
2. 设置快照策略
然后,设置快照策略,包括计划、名称、存储库、索引配置和保留策略。以下是设置夜间快照策略的示例:
代码语言:shell复制curl -X PUT -u undefined:$ESPASS "localhost:9200/_slm/policy/nightly-snapshots?pretty" -H 'Content-Type: application/json' -d'
{
"schedule": "0 30 14 * * ?",
"name": "<nightly-snap-{now/d}>",
"repository": "my_backup",
"config": {
"indices": ["*"]
},
"retention": {
"expire_after": "30d",
"min_count": 5,
"max_count": 50
}
}
'
3. 测试快照策略
您可以立即执行配置,而不必等待计划运行。以下是强制执行夜间快照策略的示例:
代码语言:shell复制curl -X POST -u undefined:$ESPASS "localhost:9200/_slm/policy/nightly-snapshots/_execute?pretty"
然后,您可以检查策略执行的结果:
代码语言:shell复制curl -X GET -u undefined:$ESPASS "localhost:9200/_slm/policy/nightly-snapshots?human&pretty"
安全性和 SLM
为了增加安全性,您可以创建不同的角色,以限制对 SLM 相关操作的访问。以下是创建 slm-admin
和 slm-read-only
角色的示例:
# 创建 slm-admin 角色
curl -X POST -u undefined:$ESPASS "localhost:9200/_security/role/slm-admin?pretty" -H 'Content-Type: application/json' -d'
{
"cluster": ["manage_slm", "cluster:admin/snapshot/*"],
"indices": [
{
"names": [".slm-history-*"],
"privileges": ["all"]
}
]
}
'
# 创建 slm-read-only 角色
curl -X POST -u undefined:$ESPASS "localhost:9200/_security/role/slm-read-only?pretty" -H 'Content-Type: application/json' -d'
{
"cluster": ["read_slm"],
"indices": [
{
"names": [".slm-history-*"],
"privileges": ["read"]
}
]
}
'
通过本节提供的操作和示例,可以更加灵活地管理 Elasticsearch 快照,并利用 SLM 自动执行备份,确保数据的完整性和可用性。保持对快照生命周期的有效控制。
我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!