步骤 1: 在原始集群上创建快照
- 配置快照存储库:
首先,在原始 Elasticsearch 集群上配置一个快照存储库。假设你使用的是文件系统类型的存储库,并且存储路径为
/mnt/backups
:curl -XPUT -u 'user:pwd' 'http://original-cluster:9200/_snapshot/esbackup' -H "Content-Type: application/json" -d' { "type": "fs", "settings": { "location": "/mnt/backups", "compress": true } }'
- 创建快照:
创建快照时,可以指定要备份的索引。如果要备份所有索引,可以使用以下命令:
curl -XPUT -u 'user:pwd' 'http://original-cluster:9200/_snapshot/esbackup/snapshot_$(date +%Y%m%d)?wait_for_completion=true' -H "Content-Type: application/json" -d' { "indices": "*", "ignore_unavailable": true, "include_global_state": true }'
步骤 2: 在新集群上配置快照存储库
在新 Elasticsearch 集群上,配置相同的快照存储库,指向相同的共享存储位置:
curl -XPUT -u 'user:pwd' 'http://new-cluster:9200/_snapshot/esbackup' -H "Content-Type: application/json" -d' { "type": "fs", "settings": { "location": "/mnt/backups", "compress": true } }'
步骤 3: 恢复快照到新集群
在新 Elasticsearch 集群上,使用以下命令列出可用的快照,以确认快照已被正确识别:
curl -XGET -u 'user:pwd' 'http://new-cluster:9200/_snapshot/esbackup/_all'
找到你之前创建的快照,然后使用以下命令将其恢复到新集群:
curl -XPOST -u 'user:pwd' 'http://new-cluster:9200/_snapshot/esbackup/snapshot_YYYYMMDD/_restore' -H "Content-Type: application/json" -d' { "indices": "*", "ignore_unavailable": true, "include_global_state": true, "rename_pattern": "index-(.+)", "rename_replacement": "restored-index-$1" }'
步骤 4: 验证数据迁移
在新集群上,检查数据是否已经恢复成功,确认所有索引和数据都在预期的位置。
- 创建快照: