You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在生产环境与备份环境的两个Elasticsearch集群之间执行备份操作

跨Elasticsearch集群(7.6.2)每月备份方案

针对你这种生产集群A(5TB数据)和备份集群B(同版本7.6.2,各6节点)的每月备份需求,结合你的服务器配置,我推荐两种落地性极强的方案,细节如下:

方案一:官方快照(Snapshot)+ 共享存储(最适合周期性备份)

这是Elasticsearch官方推荐的标准备份方式,完全适配你每月一次的需求,步骤清晰可控:

1. 准备跨集群共享存储

因为两个集群都需要访问同一个快照仓库,优先选择NFS共享目录(本地服务器场景最稳定):

  • 在任意一台节点(比如A集群的主节点)搭建NFS服务,创建一个至少6TB的共享目录(A集群5TB数据压缩后大概3-4TB,留足冗余)
  • 给A、B集群所有节点挂载这个NFS目录,确保elasticsearch用户对目录有读写权限(执行chown -R elasticsearch:elasticsearch /path/to/nfs/backup

2. 注册快照仓库(A、B集群都要执行)

在Kibana Dev Tools或者curl执行以下命令,注册同一个共享仓库:

PUT _snapshot/monthly_prod_backup
{
  "type": "fs",
  "settings": {
    "location": "/path/to/nfs/backup",
    "compress": true,
    "max_snapshot_bytes_per_sec": "200mb",
    "max_restore_bytes_per_sec": "200mb"
  }
}
  • compress: true:必须开启,大幅节省存储空间
  • 带宽限制:根据你的服务器带宽调整,200mb/s既能保证备份速度,又不会过度占用生产集群IO

3. 每月创建A集群的快照

在业务低峰期(比如每月1号凌晨)执行快照命令:

PUT _snapshot/monthly_prod_backup/snapshot_202409
{
  "indices": "*,-.kibana*,-.security*,-.monitoring*",
  "wait_for_completion": false,
  "include_global_state": false
}
  • indices:排除系统索引(不需要备份的话),*代表所有业务索引
  • wait_for_completion: false:后台执行快照,避免终端阻塞
  • include_global_state: false:不备份集群全局状态,避免恢复时覆盖B集群的配置

4. 恢复快照到B集群

快照完成后(可以用GET _snapshot/monthly_prod_backup/snapshot_202409查看状态),在B集群执行恢复命令:

POST _snapshot/monthly_prod_backup/snapshot_202409/_restore
{
  "indices": "*,-.kibana*,-.security*,-.monitoring*",
  "ignore_unavailable": true,
  "include_global_state": false,
  "rename_pattern": "(.+)",
  "rename_replacement": "backup_$1" // 可选:给恢复的索引加前缀,区分B集群原有数据
}

5. 备份验证

恢复完成后,一定要验证数据完整性:

  • 查看索引状态:GET _cat/indices?v
  • 对比文档数:GET _cat/count?v
  • 检查集群健康:GET _cluster/health

方案二:跨集群复制(CCR)的周期性同步变种(适合需要增量备份的场景)

如果你除了每月全量备份,还需要中间的增量同步,可以用CCR:

  • 在A集群将业务索引设置为领导者索引,B集群创建追随者索引
  • 默认CCR是实时同步,你可以通过暂停同步任务,每月手动触发一次全量同步,或者用ILM(索引生命周期管理)在A集群索引归档后,自动同步到B集群
  • 优点:增量同步节省时间,缺点:配置比快照复杂,适合有额外增量需求的场景

关键注意事项

  • 版本兼容性:7.6.2的快照只能恢复到相同或更高的7.x版本,你的B集群版本符合要求,没问题
  • 磁盘空间:B集群总磁盘36TB,完全容纳5TB备份数据;NFS共享目录要定期清理旧快照(比如保留最近3个月的)
  • 性能影响:备份/恢复尽量在业务低峰期执行,通过max_snapshot_bytes_per_sec限制带宽,避免影响生产A集群
  • 自动化:可以用Linux Cron或者Elasticsearch Watcher编写定时任务,每月自动执行备份和恢复流程,减少人工操作

内容的提问来源于stack exchange,提问作者leon

火山引擎 最新活动