elasticsearch的备份与恢复
1. 创建快照和从快照还原
1.1 注册快照存储库
停止elasticsearch服务,编辑配置文件指定快照存储库的目录
# mkdir /_snapshot/my_backup
# chown -R es /_snapshot/my_backup/
# cat elasticsearch.yml | grep -v '^#' | grep -v '^$'
node.name: master
path.data: /app/elasticsearch-7.8.0/data
path.logs: /app/elasticsearch-7.8.0/logs
path.repo: /_snapshot/my_backup
network.host: 0.0.0.0
cluster.initial_master_nodes: ["master"]
xpack.ml.enabled: false
启动elasticsearch后注册存储库
当设置了登录密码时,undefined:$ESPASS
需要替换为自己的登录账号和密码
$ curl -X PUT -u undefined:$ESPASS "localhost:9200/_snapshot/my_backup?pretty" -H 'Content-Type: application/json' -d'
{
"type": "fs",
"settings": {
"location": "my_backup_location"
}
}
'
#返回信息:
{
"accepted" : true
}
1.2 查看和取消已注册的快照存储库
使用get snapshot API检索有关已注册存储库的信息
$ curl -X GET -u undefined:$ESPASS "localhost:9200/_snapshot/my_backup?pretty"
# 返回信息:
{
"my_backup" : {
"type" : "fs",
"settings" : {
"location" : "my_backup_location"
}
}
}
查询所有存储库的信息
$ curl -X GET -u undefined:$ESPASS "localhost:9200/_snapshot/_all?pretty"
取消指定已注册存储库(快照文件不会丢失)
$ curl -X DELETE -u undefined:$ESPASS "localhost:9200/_snapshot/my_backup?pretty"
1.3创建和还原快照(elasticsearch中所有索引)
在存储库my_backup中创建一个名为snapshot_1的快照
curl -X PUT -u undefined:$ESPASS "localhost:9200/_snapshot/my_backup/snapshot_1?wait_for_completion=true&pretty"
返回信息:
{
"snapshot" : {
"snapshot" : "snapshot_1",
"uuid" : "7U8s0R5yTIS93ry1fthuAw",
"version_id" : 7080099,
"version" : "7.8.0",
"indices" : [
"test01",
"canal_product",
".security-7"
],
"include_global_state" : true,
"state" : "SUCCESS",
"start_time" : "2022-11-24T08:07:14.289Z",
"start_time_in_millis" : 1669277234289,
"end_time" : "2022-11-24T08:07:54.131Z",
"end_time_in_millis" : 1669277274131,
"duration_in_millis" : 39842,
"failures" : [ ],
"shards" : {
"total" : 5,
"failed" : 0,
"successful" : 5
}
}
}
模拟数据丢失,删除Elasticsearch索引
还原存储库my_backup中的snapshot_1快照索引索引
curl -X POST -u undefined:$ESPASS "localhost:9200/_snapshot/my_backup/snapshot_1/_restore?pretty"
返回信息:
{
"accepted" : true
}
还原存储库my_backup中的snapshot_1快照指定的索引
curl -X POST -u undefined:$ESPASS "localhost:9200/_snapshot/my_backup/snapshot_1/_restore?pretty" -H 'Content-Type: application/json' -d'
{
"indices": "test01,canal_product",
"ignore_unavailable": true,
"include_global_state": false,
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1",
"include_aliases": false
}
'
删除存储库my_backup中名为snapshot_1的快照
curl -X DELETE -u undefined:$ESPASS "localhost:9200/_snapshot/my_backup/snapshot_1"
1.4 创建和还原快照(指定elasticsearch中的索引)
在存储库my_backup中创建一个名为snapshot_2的快照
curl -X PUT -u undefined:$ESPASS "localhost:9200/_snapshot/my_backup/snapshot_2?wait_for_completion=true&pretty" -H 'Content-Type: application/json' -d'
{
"indices": "test01",
"ignore_unavailable": true,
"include_global_state": false,
"metadata": {
"taken_by": "kimchy",
"taken_because": "backup before upgrading"
}
}
'
还原索引test01的快照
curl -X POST -u undefined:$ESPASS "localhost:9200/_snapshot/my_backup/snapshot_2/_restore?pretty"