共计 1668 个字符,预计需要花费 5 分钟才能阅读完成。
背景需求,阿里云新建了一套 elk 但是数据需要进行迁移备份,
解决方案使用 logstash 迁移很慢,100 多 g 的索引基本要一天才能迁移完成。
使用 oss 快照方式迁移,方便测试了下一个 100 多 g 的索引快照恢复只需要 50 分钟即可完成
但是阿里云的 es 插件 elasticsearch-repository-oss 在安装好后使用报错
{
"error" : {
"root_cause" : [
{
"type" : "repository_exception",
"reason" : "[my_backup] repository type [oss] does not exist"
}
],
"type" : "repository_exception",
"reason" : "[my_backup] repository type [oss] does not exist"
},
"status" : 500
}
网上找了下资料发现其实 oss 与 s3 的接口是兼容的所以安装 s3 插件进行迁移
注意需要 oss 授权所有权限
/data/elasticsearch/bin/elasticsearch-plugin install repository-s3
#安装成功后导入 oss key
/data/elasticsearch/bin//elasticsearch-keystore add s3.client.default.access_key
/data/elasticsearch/bin//elasticsearch-keystore add s3.client.default.secret_key
安装完成后依次重启 es 集群。
新旧集群创建 my_oss_repo 的快照仓库注意需要使用 s3 类型,
bucket 为你的 oss 存储桶
{
"type": "s3",
"settings": {
"endpoint": "oss-cn-shenzhen-internal.aliyuncs.com",
"bucket": "g6k-log-es-snapshot",
"base_path": "es-backup",
"compress": true
}
}
创建一个快照:名为 snapshot_g6k_nginx,将 prod-applogs-g6k-nginx-2025.05.06 索引备份到已经创建好的仓库 my_oss_repo 中。
PUT _snapshot/my_oss_repo/snapshot_g6k_nginx?wait_for_completion=true
{"indices": "prod-applogs-g6k-nginx-2025.05.06",
"ignore_unavailable": true,
"include_global_state": false
}
备份多个索引到仓库中
# 备份 4 月所有索引到新的快照
PUT _snapshot/my_oss_repo/snapshot_g6k_202504?wait_for_completion=true
{"indices": "prod-applogs-g6k-nginx-2025.04.*",
"ignore_unavailable": true,
"include_global_state": false
}
使用命令查看备份进度
GET _snapshot/my_oss_repo/snapshot_g6k_202504
"start_time" : "2025-05-14T07:59:33.939Z",
"start_time_in_millis" : 1747209573939,
"end_time" : "1970-01-01T00:00:00.000Z",
end_time 大于 start_time 就是备份成功了
恢复数据
POST _snapshot/my_oss_repo/snapshot_g6k_nginx/_restore
{"indices": "prod-applogs-g6k-nginx-2025.05.06",
"ignore_unavailable": true,
"include_global_state": false
}
正文完
发表至: 中间件
近一天内