前一章我们讲解了快照的创建于恢复。但是都需要我们手动去操作。在我们实际工作中,常常是需要定期快照,定期保存的,避免数据丢失。快照的生命周期管理 SLM 就为我们提供了相应的功能。
PUT /_slm/policy/<snapshot-lifecycle-policy-id>
如果策略已经存在,则此请求会增加策略的版本。只存储策略的最新版本。
PUT /_slm/policy/my_snapshot_lifecycle_test_1
{
"schedule": "0 0 */1 * * ?",
"name": "" ,
"repository": "my_fs_repo",
"config": {
"indices": ["person*"]
},
"retention": {
"expire_after": "3d",
"min_count": 5,
"max_count": 50
}
}
快照名称是动态的,按时间格式生成的。+08:00 表示显示为东八区。具体的配置格式可参考官网 日期格式
“indices”: [“person*”] 使用了通配符 * ,表示以 person 开头的索引都进行快照
retention 中的配置表示,快照有效期3天,最大个数为50个(大于50即便没过期最旧的也会被删除),最小个数为5个(即便过期了,也不会被删除)
结果
{
"acknowledged": true
}
GET _slm/policy/<policy-id>
GET _slm/policy
GET /_slm/policy/my_snapshot_lifecycle_test_1?human
human 表示以人类可以看懂的方式回显(虽然直接看也费劲),比如我们的结果中时间就会显示为年月日的方式,而不是直接的毫秒数。
结果
{
"my_snapshot_lifecycle_test_1": {// 生命周期策略名称
"version": 3, // 当前的版本(3说明修改过了)
"modified_date": "2023-08-03T03:42:33.899Z",// 修改时间(这个时间是UTC时间,比北京时间少8小时)
"modified_date_millis": 1691034153899,
"policy": { // 具体策略信息
"name": "" ,
"schedule": "0 0 */1 * * ?",
"repository": "my_fs_repo",
"config": {
"indices": [
"person*"
]
},
"retention": {
"expire_after": "3d",
"min_count": 5,
"max_count": 50
}
},
"last_success": {
"snapshot_name": "my-peson-snap-2023-08-03_13-ghdxuo4kqdsf8kzdjfpokg",
"start_time_string": "2023-08-03T04:59:59.849Z",
"start_time": 1691038799849,
"time_string": "2023-08-03T05:00:01.279Z",
"time": 1691038801279
},
"next_execution": "2023-08-03T06:00:00.000Z", // 策略下次执行的时间(也是UTC时间)
"next_execution_millis": 1691042400000,
"stats": {
"policy": "my_snapshot_lifecycle_test_1",
"snapshots_taken": 20,
"snapshots_failed": 0,
"snapshots_deleted": 0,
"snapshot_deletion_failures": 0
}
}
}
结果中的时间都是UTC时间,es 中好像不支持配置时区,所以这些时间查询出来需要做时区处理。
DELETE /_slm/policy/<snapshot-lifecycle-policy-id>
DELETE /_slm/policy/my_snapshot_lifecycle_test_1
PUT /_slm/policy/<snapshot-lifecycle-policy-id>/_execute
调用后策略会立即执行快照,一般在执行升级或其他维护之前手动执行策略。
POST /_slm/_execute_retention
执行后会强制删除过期的快照。
GET /_slm/status
结果
{
"operation_mode": "RUNNING"
}
返回SLM插件的状态operation_mode响应中的字段显示三种状态之一:RUNNING ,STOPPING,或STOP。
GET /_slm/stats
结果
{
"retention_runs": 1,
"retention_failed": 0,
"retention_timed_out": 0,
"retention_deletion_time": "0s",
"retention_deletion_time_millis": 0,
"total_snapshots_taken": 22,
"total_snapshots_failed": 0,
"total_snapshots_deleted": 0,
"total_snapshot_deletion_failures": 0,
"policy_stats": [
{
"policy": "my_snapshot_lifecycle_test_1",
"snapshots_taken": 22,
"snapshots_failed": 0,
"snapshots_deleted": 0,
"snapshot_deletion_failures": 0
}
]
}
POST /_slm/start
POST /_slm/stop