Elasticsearch 快照与恢复-快照仓库 repository
作者:互联网
Elasticsearch 中的一个快照即一个运行时的集群备份。快照能在以下场景使用。
- 不停机的情况下周期性的备份集群。
- 数据被删除或者硬盘故障的情况下还原数据
- 在集群之间传输数据
- 使用可搜索快照来减少存储资源。
ES 把快照存储在一个叫做快照仓库的地方。在使用快照前,需要先注册快照库,用于管理快照,如提供存储位置、存储用途(敏感数据的存放)。ES 支持部分云存储类型的快照库。
- AWS S3
- Google Cloud Storage (GCS)
- Microsoft Azure
在注册完快照库之后,可以使用快照生命周期管理(SLM)来自动的生成和管理快照,之后可以使用快照还原来实现恢复或传输数据的功能。
快照内容
默认情况下,集群快照包含集群状态,所有常规的数据流、索引。
索引状态包含下面信息:
- 集群持久化设置
- 索引模板
- 其它
可以使用快照只备份集群中的数据流或索引。
快照如何工作
快照会自动的删除以便于节省存储空间和减少完了传输的消耗。为了备份一个索引,快照会复制索引的segment,并将其保存在快照库中,由于segement是不可变的,因此快照只需要复制比快照库中新的索引segement即可完成增量备份。
每个快照是逻辑独立的,当删除一个快照时, ES 只是删除由快照使用的专有段,不会删除快照库中其它快照的segement。
快照和shard allocation
快照从索引的主分片中拷贝segement。当启动一个快照时,ES立即开始复制可用的主分片上的段。当分片在启动中或者重定位时,ES会等该分片可用后再继续拷贝索引段,如果有一个或多个主分片不可以,快照备份会失败。
一旦一个快照开始复制某一个主分片,ES不会移动该分片到其它节点,ES会等到复制完成在进行移动操作。
快照开始和启动时间
一个快照并不能表示一个精确的时间点的集群。相反,每个快照都包含启动时间、结束时间。 快照表示的是在这两个时间点之间的分片数据的视图。
快照兼容性
不能先前兼容,即新版本的快照不能在老版本的es下进行还原。
快照是唯一可靠和支持备份集群的方式。采用备份底层文件的方式会有不可知的问题。
不要修改快照仓库下的任何内容。
注册一个仓库
自己管理下集群的仓库配置
Azure
Google Cloud Storage
AWS S3
Shared file system
Read-only URL
Source-only
使用共享文件系统注册仓库
创建文件系统快照库需要在配置文件中配置 仓库目录,否则会报错,集群中的所有节点需要挂载到相同的目录下。
vi elasticsearch.yml
path.repo: /usr/share/elasticsearch/_snapshots
创建共享文件系统镜像仓库
curl --location --request PUT "http://localhost:29201/_snapshot/person" \
--header "Content-Type: application/json" \
--data-raw "{
\"type\": \"fs\",
\"settings\": {
\"location\": \"perosn\"
}
}"
当多个集群使用相同的快照库时,只能有一个集群有权限对该仓库写入,其它的应当配置为只读。如集群间复制场景下。
只读配置
PUT _snapshot/my_fs_backup
{
"type": "fs",
"settings": {
"location": "my_fs_backup_location",
"readonly": true
}
}
- chunk_size
- compress : 默认true
- location : 快照在共享文件系统中的位置,必须要在 path.repo中配置。
- max_number_of_snapshots: 最大快照数量。
- readonly : ture ,只能读该仓库。
只读的url类型仓库
可以使用url仓库来给集群授予共享文件系统的只读权限。由于url 仓库是只读的,相较于共享文件系统仓库中的只读配置,该方式更安全和方便。
PUT _snapshot/my_read_only_url_repository
{
"type": "url",
"settings": {
"url": "file:/mount/backups/my_fs_backup_location"
}
}
- url 支持以下协议
- file
- ftp
- http/https
- jar
使用https、http、ftp时, url需要在集群配置中 repositories.url.allowed_urls 配置
source-only 快照库
可以使用Source-only 库来实现最小的快照, souce-only 可以比其它类型的快照减少50%的磁盘空间(只存储source 信息)。
和其它类型苦苦不同, souce-only 不直接存储快照,而是委托其它已注册的快照库来存储数据。
当采用source-only 的快照库时,ES 在代理库中创建source-only快照,该快照只包含属性和元数据信息,它不包含索引和文档值,而且当还原是,不是立即可搜索的。若要搜索已还原的数据,首先需要reindex到新的索引中。
source-only 只支持开启了_source 属性且 没有source_filtering 应用的索引。
- restored 的索引是只读的,并且只能使用 match_all搜索或者 使用scroll 请求去重新reindex 新索引。
- restored index 的mapping 信息是空的,当原始的mapping仍然可以使用,需要在最顶层的meta元素中查找。
PUT _snapshot/my_src_only_repository
{
"type": "source",
"settings": {
"delegate_type": "fs",
"location": "my_backup_repository"
}
}
标签:快照,repository,仓库,索引,only,Elasticsearch,url,集群 来源: https://www.cnblogs.com/hhan/p/16644107.html