方案選型
Elasticsearch(ES)異地容災主要有以下方案:
OSS快照備份與恢複:通過將索引資料備份到阿里雲Object Storage Service,實現資料持久化儲存。首次快照為全量備份,後續為增量備份。通過跨叢集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叢集即可恢複服務,無需等待快照恢複。
雖然初始部署成本較高,但長期來看避免了資料丟失導致的業務損失,性價比更高。