上一篇文章中,我们简要的列举了 Elasticsearch 备份 主要的几个方案,比对了一下各个方案的实现原理、优缺点和适用的场景。现在我们来看看 ES 自带的镜像备份方案。
1. 镜像备份
在开始研究镜像备份之前,我先抛三个问题:
- ES 镜像备份是怎么实现增量备份的?
- 历史镜像清理维护是怎么做到保存完整数据的?
- 增量恢复要怎么操作的?
2. 镜像的准备条件
在做镜像备份之前,先要为 ES 注册一个镜像仓库,即 repository。目前 ES 支持的仓库类型有:
| Respository | 配置类型 |
|---|---|
| Shared file system | “type” : “fs” |
| Read-only URL | “type”: “url” |
| S3 | “type”: “s3” |
| HDFS | “type”: “hdfs” |
| Azure | “type”: “azure” |
| Google Cloud Storage | “type”: “gcs” |
注意: S3, HDFS, Azure and GCS 需要安装相应的插件。
那我们注册一个 S3 插件并使用 MinIO 来做仓库进行测试吧。
MinIO 的安装配置在这里简略了,从安装插件开始。
# 插件安装 在elasticsearch/bin目录下
./bin/elasticsearch-plugin install repository-s3
# 添加访问账号,并reload
bin/elasticsearch-keystore add s3.client.default.access_key
bin/elasticsearch-keystore add s3.client.default.secret_key
POST /_nodes/{node_id}/reload_secure_settings
# 注册 repository
PUT _snapshot/my-minio-repository
{
"type": "s3",
"settings": {
"bucket": "es-bucket",
"endpoint": "http://127.0.0.1:9002",
"compress": true
}
}
3. 备份流程
现在我们来看看整个镜像备份的流程,在这里我们使用 sample_data_flights 进行备份测试(为了方便测试比对,我们将该索引主分片设置为 1)。
3.1 首次备份
镜像快照是基于快照开始时间的数据文件备份。
snapshot 备份速度的主要影响参数是 max_snapshot_bytes_per_sec,是单节点数据备份的最快速度,默认为每秒 40mb,可以结合集群磁盘性能在仓库注册时做调整。

这里就是将 sample_data_flights 数据文件完整的放入 MinIO 存储中。可以查看系统上的文件进行验证。
操作命令:
# 第一次镜像名称设置为 snapshot_1
PUT _snapshot/minio-repository/snapshot_1
{
"indices": "sample_data_flights",
"ignore_unavailable": true,
"include_global_state": false,
"partial": false
}
在 data 目录下去寻找索引的 uuid 能找到对应的数据文件
# pwd
/data/nodes/0/indices/cv8DxU5BTfKB5SnI0ubVtQ/0/in

最低0.47元/天 解锁文章
950

被折叠的 条评论
为什么被折叠?



