利用阿里云oss迁移elasticsearch索引数据
# 迁移elk
elk集群数据备份
# 快照备份
- snapshot
- repository
- 创建repository
- elasticsearch.yml添加path.repo: ["/User/xxx/x/x/my_backup"]
- 调用snapshotAPI,下面的my_backup是自定义的repository名称
PUT /_snapshot/my_backup
{
"type": "fs", # 因为用的文件目录路径的方式,所以用fs代表这是个文件系统
"settings": {
"location": "/User/xxx/x/x/my_backup",
"compress": true # 打开压缩
}
}
2
3
4
5
6
7
8
# 自建es创建备份到阿里云oss
- 安装 阿里云oss 插件
在您的 Elasticsearch 服务器上安装阿里云 Elasticsearch 插件,您可以在 https://github.com/aliyun/elasticsearch-repository-oss/releases 下载插件。
源es安装oss插件,下面解压那一步根据你自己的es的plugin路径进行修改
wget https://github.com/aliyun/elasticsearch-repository-oss/releases/download/v7.7.1/elasticsearch-repository-oss-7.7.1.zip
sudo unzip -d /path/to/elasticsearch/plugins/elasticsearch-repository-oss elasticsearch-repository-oss-7.7.1.zip
rm -rf elasticsearch-repository-oss-7.7.1.zip
cd /path/to/elasticsearch/plugins/elasticsearch-repository-oss
rm -rf __MACOSX
2
3
4
5
目的es安装oss插件,下面解压那一步根据你自己的es的plugin路径进行修改
wget https://github.com/aliyun/elasticsearch-repository-oss/releases/download/v7.7.1/elasticsearch-repository-oss-7.17.0.zip
#下面这一步根据你自己的es的plugin路径进行修改
sudo unzip -d /path/to/elasticsearch/plugins/elasticsearch-repository-oss elasticsearch-repository-oss-7.17.0.zip
rm -rf elasticsearch-repository-oss-7.7.1.zip
cd /path/to/elasticsearch/plugins/elasticsearch-repository-oss
rm -rf __MACOSX
2
3
4
5
6
- 创建 OSS 存储桶
在阿里云 OSS 中创建一个存储桶,用于存储 Elasticsearch 备份数据。
- 创建 Elasticsearch 的备份仓库
在kibana或者postman执行以下方法
PUT _snapshot/my_backup
{
"type": "oss",
"settings": {
"endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", //这是杭州内网节点域名,修改成你bucket所在的节点域名
"access_key_id": "[your_access_key_id]",
"secret_access_key": "[your_secret_access_key]",
"bucket": "[your_bucket_name]",
"compress": true,
"chunk_size": "500mb",
"base_path": "snapshot/"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
- 创建 Elasticsearch 备份
重启Elasticsearch
使用 Elasticsearch API 创建一个备份:
PUT /_snapshot/jiuyu_es_backup
{
"type": "oss",
"settings": {
"endpoint": "http://oss-cn-guangzhou.aliyuncs.com",
"access_key_id": "LTAIHKxxxxxxxxxFDt",
"secret_access_key": "l9mMlgxyNxxxxxxxxxxn",
"bucket": "xxxxx-es",
"compress": true,
"chunk_size": "500mb",
"base_path": "snapshot/xxxxx_es_backup"
}
}
curl -XPUT "http://119.xxx.xx.xxx:9200/_snapshot/xxxxx_es_backup" -H 'Content-Type: application/json' -d'{ "type": "oss", "settings": { "endpoint": "http://oss-cn-guangzhou.aliyuncs.com", "access_key_id": "LxxxxHxxxxFDt", "secret_access_key": "l9xxxxxxxM5c2YAMu8xn", "bucket": "xxxxx-es", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/xxxxx_es_backup" }}'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
其中,my_oss_repository 是在配置文件中定义的存储库名称,my_backup 是您创建的备份名称。
- 将备份文件上传到 OSS
备份完成后,您可以使用 OSS API 将备份文件上传到阿里云 OSS:
PUT /<您的 OSS 存储桶名称>/<您的备份文件存储路径>/<备份文件名称>
其中,<您的 OSS 存储桶名称> 是您创建的存储桶名称,<您的备份文件存储路径> 是您在配置文件中定义的备份文件存储路径,<备份文件名称> 是您创建的备份文件名称。
以上就是将自建的 Elasticsearch 创建备份并上传到阿里云 OSS 的步骤。
# 怎么从阿里云oss恢复Elasticsearch数据
首先,您需要在阿里云OSS上创建一个存储您Elasticsearch备份的Bucket,并将备份文件上传到该Bucket中。
接下来,您需要安装Elasticsearch的 OSS 插件,该插件可以让Elasticsearch从服务器或OSS中恢复数据。
然后,您需要在Elasticsearch配置文件中配置 OSS 插件,以指定Bucket的名称、访问密钥等信息。
接着,您可以使用Elasticsearch的恢复API来恢复数据。在执行恢复操作之前,您需要确定要恢复的索引名称、恢复到哪个时间点等信息。
如果恢复途中出现错误,可以根据日志提示,修改或者删除冲突的索引
以下是一个简单的恢复API请求示例:
POST _snapshot/my_backup/snapshot_1/_restore
{
"indices": "my_index",
"include_global_state": true,
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1"
}
2
3
4
5
6
7
上述示例中,my_backup是您在Elasticsearch中配置的备份存储库名称,snapshot_1是要恢复的快照名称,my_index是要恢复的索引名称,rename_pattern和rename_replacement参数可用于更改恢复后的索引名称。
需要注意的是,恢复操作可能需要一些时间,具体时间取决于备份文件的大小和Elasticsearch集群的规模。在执行恢复操作时,请确保Elasticsearch集群的健康状况,并确保您有足够的存储空间来存储恢复的数据。