文件

從遠端複本重新同步 Bucket

此頁面的程序使用健康的複寫遠端重新同步 MinIO bucket 的內容。重新同步支援在複本組態中 MinIO 部署上的部分或全部資料遺失後進行復原。

例如,考慮一個類似以下的 MinIO 主動-主動複寫組態

Active-Active Replication synchronizes data between two remote deployments.

重新同步允許使用參與 MinIO 部署之一上的健康資料,作為重建另一個部署的來源。

重新同步是每個 bucket 的程序。您必須針對遠端上發生部分或全部資料遺失的每個 bucket 重複重新同步。

BC/DR 操作期間的專業支援

MinIO SUBNET 用戶可以登入並建立與重新同步相關的新問題。透過 SUBNET 與 MinIO 工程團隊協調可以確保成功重新同步和恢復正常操作,包括效能測試和健康診斷。

社群使用者可以在 MinIO 社群 Slack上尋求支援。社群支援僅盡力而為,並且不保證回應速度。

需求

MinIO 部署必須在線上

重新同步需要來源和目標部署都在線上並且能夠接受讀取和寫入操作。來源必須具有與遠端的完整網路連線。

遠端部署可能「不健康」,因為它已遭受部分或全部資料遺失。只要來源和目的地都保持連線,重新同步就可以解決資料遺失的問題。

重新同步需要現有的複寫組態

重新同步需要健康的來源部署針對不健康的目標 bucket 具有現有的複寫組態。此外,重新同步僅適用於使用 現有物件複寫選項建立的那些複寫規則。

使用 mc replicate ls 來檢閱健康來源 bucket 的已設定複寫規則和目標。

複寫需要符合的物件加密設定

MinIO 支援使用 SSE-KMSSSE-S3 加密的物件的複寫。

  • 對於使用 SSE-KMS 加密的物件,MinIO 要求目標 bucket 支援使用與用於加密來源 bucket 上物件相同的金鑰名稱的 SSE-KMS 物件加密。

  • 對於使用 SSE-S3 加密的物件,MinIO 要求目標 bucket 也支援 SSE-S3 物件加密,而與金鑰名稱無關。

在複製過程中,MinIO 會在來源儲存桶上解密物件,並透過網路傳輸未加密的物件。目標 MinIO 部署接著會使用目標的加密設定重新加密物件。因此,MinIO 強烈建議在來源和目標部署上啟用 TLS,以確保物件在傳輸過程中的安全。

MinIO 支援複製用戶端加密物件 (SSE-C)。

複製需要 MinIO 部署

MinIO 伺服器端複製僅在 MinIO 部署之間有效。來源和目標部署必須執行版本相符的 MinIO 伺服器。

若要設定任意 S3 相容服務之間的複製,請使用 mc mirror

複製需要版本控制

MinIO 依賴版本控制提供的不可變更保護,以支援複製和重新同步。

使用 mc version info 來驗證來源和遠端儲存桶的版本控制狀態。使用 mc version enable 命令來啟用必要的版本控制。

如果您在來源儲存桶中排除前綴或資料夾的版本控制,MinIO 無法複製該資料夾或前綴中的物件。

複製需要相符的物件鎖定狀態

MinIO 支援複製在 WORM 鎖定下持有的物件。兩個複製儲存桶都必須啟用物件鎖定,MinIO 才能複製鎖定的物件。對於主動-主動組態,MinIO 建議在兩個儲存桶上使用相同的保留規則,以確保跨站點行為一致。

您必須在建立儲存桶時啟用物件鎖定,如 S3 行為所示。您隨時都可以設定物件保留規則。在開始此程序之前,請先在狀況不良的目標儲存桶上設定必要的規則。

考量事項

重新同步需要時間

重新同步是一個背景程序,會持續檢查來源 MinIO 儲存桶中的物件,並根據需要將其複製到遠端。完成複製所需的時間可能會因物件的數量和大小、與遠端 MinIO 部署的傳輸量以及來源 MinIO 部署上的負載而異。由於這些變數,完成的總時間通常無法預測。

MinIO 建議設定負載平衡器或代理伺服器,以僅將流量導向狀況良好的叢集,直到同步完成。以下命令可以提供對重新同步狀態的見解

  • 來源上的 mc replicate resync status,以追蹤重新同步進度。

  • 來源和遠端上的 mc replicate status,以追蹤正常複製資料。

  • 針對來源和遠端執行 mc ls -r --versions ALIAS/BUCKET | wc -l,以驗證每個物件和物件版本的總數。

資料遺失後重新同步物件

此程序使用現有的 MinIO 複製組態,將遺失的資料還原到參與該組態的其中一個 MinIO 部署。具體而言,狀況良好的 MinIO 部署(SOURCE)會將其現有資料同步到狀況不良的 MinIO 部署(TARGET)。

此程序假設 SOURCE 有現有的 別名,並且具有設定複製的必要權限

您可以針對每個需要重新同步的儲存桶重複此程序。每個儲存桶最多只能執行一個複製作業。

1) 列出狀況良好的來源上已設定的複製目標

執行 mc replicate ls 命令,列出狀況良好的 SOURCE 部署上需要重新同步的 BUCKET 的已設定遠端目標。

mc replicate ls SOURCE/BUCKET --json
  • 使用來源 MinIO 部署的 別名 取代 SOURCE

  • 使用要用作重新同步來源的儲存桶名稱取代 BUCKET

輸出類似以下內容

{
   "op": "",
   "status": "success",
   "url": "",
   "rule": {
      "ID": "cer1tuk9a3p5j68crk60",
      "Status": "Enabled",
      "Priority": 0,
      "DeleteMarkerReplication": {
         "Status": "Enabled"
      },
      "DeleteReplication": {
         "Status": "Enabled"
      },
      "Destination": {
         "Bucket": "arn:minio:replication::UUID:BUCKET"
      },
      "Filter": {
         "And": {},
         "Tag": {}
      },
      "SourceSelectionCriteria": {
         "ReplicaModifications": {
            "Status": "Enabled"
         }
      },
      "ExistingObjectReplication": {
         "Status": "Enabled"
      }
   }
}

輸出中的每個文件都代表一個已設定的複製規則。Destination.Bucket 欄位指定儲存桶上給定規則的 ARN。從您要重新同步物件的儲存桶中找出正確的 ARN。

2) 開始重新同步程序

執行 mc replicate resync start 命令以開始重新同步程序

mc replicate resync start --remote-bucket "arn:minio:replication::UUID:BUCKET" SOURCE/BUCKET
  • 使用狀況不良的 TARGET MinIO 部署上 BUCKET 的 ARN 取代 --remote-bucket 值。

  • 使用來源 MinIO 部署的 別名 取代 SOURCE

  • 使用狀況良好的 SOURCE MinIO 部署上的儲存桶名稱取代 BUCKET

該命令會傳回重新同步作業 ID,表示該程序已開始。

3) 監控重新同步

在來源部署上使用 mc replicate resync status 命令,以追蹤接收到的複製資料

mc replicate resync status ALIAS/BUCKET

輸出類似以下內容

mc replicate resync status /data
Resync status summary:
● arn:minio:replication::6593d572-4dc3-4bb9-8d90-7f79cc612f01:data
   Status: Ongoing
   Replication Status | Size (Bytes)    | Count
   Replicated         | 2.3 GiB         | 18
   Failed             | 0 B             | 0

狀態會在重新同步程序完成後更新為 Completed

4) 後續步驟

  • 如果 TARGET 儲存桶損壞延伸到複製規則,您必須重新建立這些規則以符合先前的複製組態。請參閱啟用雙向伺服器端儲存桶複製以取得更多指引。

  • 執行基本驗證,確認複製組態中的所有儲存桶在 mc lsmc stat 等命令中顯示類似的結果。

  • 在還原任何複製規則並驗證站點之間的複製之後,您可以設定反向代理、負載平衡器或其他網路控制平面,以管理連線以恢復將流量傳送到重新同步的部署。