文件

從遠端副本重新同步儲存桶

本頁的程序使用健全的複製遠端重新同步 MinIO 儲存桶的內容。重新同步支援在副本配置中 MinIO 部署上部分或全部資料遺失後的復原。

例如,考慮類似於以下的 MinIO 主動-主動複製配置

Active-Active Replication synchronizes data between two remote deployments.

重新同步允許使用參與的 MinIO 部署之一上的健全資料作為重建其他部署的來源。

重新同步是每個儲存桶的程序。您必須為遠端上遭受部分或全部資料遺失的每個儲存桶重複重新同步。

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

MinIO SUBNET 使用者可以登入並建立與重新同步相關的新問題。透過 SUBNET 與 MinIO 工程部門協調可以確保成功重新同步和恢復正常運作,包括效能測試和健全狀況診斷。

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

需求

MinIO 部署必須在線上

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

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

重新同步需要現有的複製配置

重新同步要求健全的來源部署必須具有不健全目標儲存桶的現有複製配置。此外,重新同步僅適用於使用現有物件複製選項建立的那些複製規則。

使用 mc replicate ls 來檢閱已設定的複寫規則和狀況良好的來源儲存體的目標。

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

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

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

  • 對於使用 SSE-S3 加密的物件,無論金鑰名稱為何,MinIO *要求* 目標儲存體也支援 SSE-S3 物件加密。

作為複寫過程的一部分,MinIO 會在來源儲存體上*解密*物件,並透過網路傳輸未加密的物件。然後,目的地 MinIO 部署會使用目標的加密設定重新加密物件。因此,MinIO *強烈建議* 在來源和目的地部署上都啟用 TLS,以確保物件在傳輸過程中的安全。

MinIO *不*支援複寫用戶端加密的物件 (SSE-C)。

複寫需要 MinIO 部署

MinIO 伺服器端複寫僅在 MinIO 部署之間運作。來源和目的地部署都*必須*執行版本相符的 MinIO Server。

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

複寫需要版本控制

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

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

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

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

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

您必須按照 S3 的行為,在建立儲存體時啟用物件鎖定。然後,您可以隨時設定物件保留規則。在開始此程序*之前*,請先在狀況不佳的目標儲存體上設定必要的規則。

考量事項

重新同步需要時間

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

MinIO 建議設定負載平衡器或 Proxy,以便在同步完成之前僅將流量導向狀況良好的叢集。以下命令可以提供對重新同步狀態的深入了解

  • 來源上的 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
  • SOURCE 取代為來源 MinIO 部署的 別名

  • 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
  • --remote-bucket 值取代為狀況不佳的 TARGET MinIO 部署上的 BUCKET ARN。

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

  • BUCKET 取代為狀況良好的 SOURCE MinIO 部署上的儲存體名稱。

該命令會傳回重新同步作業 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 等命令顯示類似的結果。

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