方案选型
Elasticsearch(ES)异地容灾主要有以下方案:
OSS快照备份与恢复:通过将索引数据备份到阿里云对象存储OSS,实现数据持久化保存。首次快照为全量备份,后续为增量备份。通过跨集群OSS仓库,可将快照数据恢复到目标ES实例。详情请参见通过跨集群OSS仓库备份与恢复数据。
Logstash:通过配置管道(Pipeline),从源端ES集群读取数据,经过处理后写入目标集群。适用于版本跨度较大的数据迁移和需要数据过滤转换的场景。详情请参见快速入门。
Reindex:通过ES内置的Reindex API,将全量或符合条件的数据从一个索引复制到另一个索引,支持跨集群操作。适用于数据量较小的一次性迁移场景。详情请参见通过Reindex API迁移数据。
跨集群复制(CCR):将Leader集群的可写索引,以异步、增量的方式自动复制到一个或多个Follower集群。支持近实时同步,适用于对RPO和RTO要求较高的容灾场景,详情请参见通过CCR实现跨集群数据复制。
方案对比
方案 | 适用场景 | RPO | RTO | 主要限制 |
OSS快照 | 大规模数据(GB~PB级别)的定期备份与恢复 | 小时级到天级(取决于快照间隔) | 数小时(取决于数据量和分片恢复时间) | 无法实现持续同步;恢复期间可能需要停止服务 |
Logstash | 对实时性要求不高的数据迁移;需要数据过滤转换的场景;版本跨度较大的迁移 | 秒级到分钟级(取决于同步频率) | 数小时(取决于数据量和实例性能) | 批量同步,无法实时;不支持同步delete操作 |
Reindex | 数据量较小的一次性索引迁移 | 不适用(一次性操作) | 分钟级到数小时(取决于数据量) | 无法持续同步;大规模数据迁移效率低 |
CCR | 异地容灾、读写分离、就近访问 | 近零(秒级) | 秒级到分钟级 | Follower索引只读;需要相同的mapping和分片数 |
对于RPO和实时性要求高的异地容灾场景,CCR是最佳选择:
CCR实现秒级数据同步,数据丢失最小化。
主集群故障时,业务流量切换到Follower集群即可恢复服务,无需等待快照恢复。
虽然初始部署成本较高,但长期来看避免了数据丢失导致的业务损失,性价比更高。