全部產品
Search
文件中心

Elasticsearch:通過CCR實現跨叢集資料複製

更新時間:Apr 03, 2026

跨叢集複製CCR(Cross-Cluster Replication)支援將Leader叢集的索引資料近即時複製到Follower叢集,實現異地容災、讀寫分離和就近訪問。本文介紹ES常見容災方案的對比分析和CCR的工作原理,協助選擇適合的容災方案。

CCR工作原理

基本架構

CCR採用主動-被動(Active-Passive)架構。Leader叢集負責接收所有寫操作,Follower叢集為唯讀狀態,僅從Leader叢集複製資料。

  • Leader叢集:源端叢集,承擔所有寫操作。

  • Follower叢集:目標端叢集,唯讀狀態,通過CCR從Leader叢集同步資料。

資料複製流程

CCR的資料複製分為兩個階段:

初始化階段

Follower叢集向Leader發起初始化請求,Leader將索引的所有Lucene segment檔案傳輸到Follower索引,類似於快照恢複機制。

增量同步處理階段

Follower索引的分區定期(預設每秒)向Leader發起提取要求,擷取自上次同步點之後的最新操作。具體過程如下:

  1. 定位拉取起點:Follower本地維護一個remote_checkpoint,表示已成功應用到本地的最新操作位置,對應Leader Translog(交易記錄)中的global_checkpoint

  2. 從Leader Translog讀取操作:Leader根據Follower提供的from_seq_no定位Translog中的起始位置,讀取後續所有操作(index、update、delete),返回巨集指令清單。

  3. Follower本地重放:Follower在本地按順序重放這些操作,更新remote_checkpoint。如果重放失敗(如版本衝突),會暫停同步並記錄錯誤。

  4. 持續輪詢:Follower以固定間隔持續拉取新操作,通常延遲小於1秒。

Translog的核心作用

Translog(交易記錄)是CCR增量同步處理的資料來源,在ES中承擔以下作用:

  • 防止資料丟失:ES預設每秒refresh一次,將記憶體緩衝區資料產生新的Lucene可搜尋段,但這些段尚未同步到磁碟。Translog記錄了所有寫操作,可在節點崩潰後通過重放恢複資料。

  • 保障副本一致性:寫操作先寫入Translog,再轉寄給副本分區。只有主副分區都確認寫入後,才返回成功。

  • 支援CCR增量同步處理:CCR通過ES內部的Translog API讀取動作記錄,擷取指定序號之後的所有變更,實現近即時資料複製。

Translog按分區隔離儲存,每個分區擁有獨立的Translog目錄,儲存路徑為indices/{index_uuid}/{shard_id}/translog/。Translog檔案(.tlog)以二進位格式儲存,採用Generation機制滾動管理:每次flush或檔案達到大小上限(預設512MB)時,建立新一代檔案。

阿里雲ES叢集的CCR網路方案

阿里雲ES執行個體部署在獨立的管控VPC內,而非使用者VPC中。即使兩個叢集在同一地區或已通過CEN打通跨地區VPC,也無法直接實現叢集間的私網互連。需要藉助NLB和PrivateLink打通管控VPC網路。

根據兩個叢集是否在同一地區,選擇對應的操作文檔:

情境

說明

操作文檔

同地區

Leader和Follower叢集在同一地區,通過NLB+PrivateLink打通管控VPC

同地區ES資料複製

跨地區

Leader和Follower叢集在不同地區,需先通過CEN打通使用者VPC,再通過NLB+PrivateLink打通管控VPC

跨地區ES資料複製

使用限制

  • 兩個叢集的管控部署模式均需為雲原生新管控(v3)。如果叢集為v1或v2架構,需先完成架構升級,請參見執行個體架構升級

    如何識別ES叢集架構版本:登入ES控制台,在執行個體基本資料頁面查看管控部署模式雲原生新管控(v3)或者基礎管控(v2)

  • 兩個叢集的版本均需為7.10.0及以上,且Follower叢集版本不低於Leader叢集版本。

  • Leader叢集索引的mapping和分區數必須與Follower叢集索引一致,Follower叢集的分區數不能更改。