文件

儲存桶複製

MinIO 支援在來源和目的地儲存桶之間進行物件的伺服器端和用戶端複製。

伺服器端儲存桶複製

設定每個儲存桶的規則,以自動同步 MinIO 部署之間的物件。您在其中設定儲存桶複製規則的部署充當「來源」,而設定的遠端部署充當「目標」。MinIO 會在物件寫入作業 (例如 PUT) 中套用規則,並自動同步新物件物件變更,例如新的物件版本或物件中繼資料的變更。

MinIO 伺服器端儲存桶複製僅支援遠端複製目標上相同版本的 MinIO 叢集。

用戶端儲存桶複製

使用命令程序在同一個 S3 相容叢集內在兩個獨立的 S3 相容叢集之間同步儲存桶之間的物件。使用 mc mirror 的用戶端複製支援 MinIO 到 S3 和類似的複製設定。

儲存桶與站點複製

儲存桶複製與站點複製不同,並且彼此互斥。

  • 儲存桶複製會在儲存桶層級同步資料,例如儲存桶前置路徑和物件。

    您可以隨時設定儲存桶複製,並且遠端 MinIO 部署可能在複製目標儲存桶上具有預先存在的資料。

  • 站點複製會擴展儲存桶複製,以包含 IAM、安全性權杖、存取金鑰和儲存桶層級設定。

    通常在最初部署 MinIO 對等站點時設定站點複製。在初始設定時,只有一個站點可以持有任何儲存桶或物件。

伺服器端儲存桶複製

MinIO 伺服器端儲存桶複製是一種自動儲存桶層級設定,可在來源和目的地儲存桶之間同步物件。MinIO 伺服器端複製需要來源和目的地儲存桶為兩個執行相同 MinIO 伺服器版本的獨立 MinIO 叢集。

對於每個對儲存桶的寫入作業,MinIO 會檢查儲存桶的所有已設定複製規則,並套用具有最高設定優先順序的符合規則。MinIO 會同步新物件物件變更,例如新的物件版本或物件中繼資料的變更。這包括中繼資料作業,例如啟用或修改物件鎖定或保留設定。

MinIO 伺服器端儲存桶複製在功能上類似於 Amazon S3 複製,同時新增了以下僅限 MinIO 的功能

  • 來源和目的地儲存桶名稱可以匹配,支援站點到站點的用例,例如 Splunk 或 Veeam BC/DR。

  • 比 S3 儲存桶複製設定簡化的實作,消除了設定存取控制轉換、指標和來源選取準則等設定的需求。

  • 在來源和目的地儲存桶之間進行物件的 Active-Active (雙向) 複製。

  • 在三個或更多 MinIO 部署之間進行物件的多站點複製

重新同步 (災害復原)

重新同步主要支援在使用複本設定中的健全部署時,在 MinIO 部署上的資料部分或全部遺失後進行復原。使用 mc replicate resync 命令,使用指定的來源儲存桶完全重新同步遠端目標 (mc admin bucket remote)。

重新同步程序會針對所有包含現有物件複寫的已設定複寫規則,檢查來源儲存桶中的所有物件。對於符合規則的每個物件,無論該物件目前的複寫狀態為何,重新同步程序都會將該物件放入複寫佇列中。

MinIO 會跳過同步遠端副本與來源完全相同的物件,包括物件中繼資料。否則,MinIO 不會優先處理或修改佇列中關於目標現有內容的項目。

mc replicate resync 在儲存桶層級運作,且支援前綴層級的粒度。在大型儲存桶上啟動重新同步可能會導致複寫相關的負載和流量顯著增加。請謹慎使用此命令,且僅在必要時使用。

對於已設定物件分層 (Tiering)的儲存桶,複寫重新同步會還原未轉換狀態且沒有相關聯轉換中繼資料的物件。因此,任何先前轉換到遠端儲存體的資料都會永久與遠端 MinIO 部署斷開連線。對於將明確人類可讀前綴指定為遠端組態一部分的分層組態,您可以安全地清除該前綴中已轉換的資料,以避免與「遺失」資料相關的成本。

刪除作業的複寫

MinIO 支援複寫刪除作業,其中 MinIO 會同步刪除特定物件版本新的刪除標記。刪除作業複寫使用與所有其他複寫作業相同的複寫程序

MinIO 需要明確啟用版本化刪除和刪除標記複寫。使用 mc replicate add --replicate 欄位來指定 deletedelete-marker 的其中一個或兩個,以分別啟用版本化刪除和刪除標記複寫。若要同時啟用兩者,請使用逗號分隔符號 delete,delete-marker 指定兩個字串。

對於刪除標記複寫,MinIO 會在刪除作業建立刪除標記後開始複寫程序。MinIO 使用 X-Minio-Replication-DeleteMarker-Status 中繼資料欄位來追蹤刪除標記複寫狀態。在主動-主動複寫組態中,如果兩個叢集同時為某個物件建立刪除標記,如果其中一個或兩個叢集在複寫事件同步之前關閉,則 MinIO 可能會產生重複的刪除標記。

為了複寫特定物件版本的刪除,MinIO 會將該物件版本標記為 PENDING,直到複寫完成。一旦遠端目標刪除該物件版本,MinIO 就會刪除來源上的物件。雖然此程序可確保近乎同步的版本刪除,但可能會導致在初始刪除作業之後,清單作業傳回該物件版本。MinIO 使用 X-Minio-Replication-Delete-Status 來追蹤刪除版本複寫狀態。

MinIO 僅複寫明確的用戶端驅動刪除作業。MinIO 不會複寫從應用生命週期管理到期規則刪除的物件。對於主動-主動組態,請在所有複寫儲存桶上設定相同的到期規則,以確保物件到期的一致應用。

現有物件的複寫

MinIO 預設會將來源儲存桶中的現有物件複寫到已設定的遠端,類似於AWS:在 S3 儲存桶之間複寫現有物件,而無需聯絡技術支援的額外負荷。

MinIO 會將滿足複寫規則的所有物件或物件前綴標記為符合同步到遠端叢集和儲存桶的資格。MinIO 只會排除沒有版本 ID 的物件,例如在儲存桶上啟用版本控制之前寫入的物件。

您可以在設定或修改儲存桶複寫規則時停用現有物件複寫。您必須在建立或修改期間指定所有所需的複寫功能

  • 對於新的複寫規則,請從指定給 mc replicate add --replicate 的複寫功能清單中排除 "existing-objects"

  • 對於現有的複寫規則,請使用 mc replicate update --replicate 從現有的複寫功能清單中移除 "existing-objects"。新規則會取代先前的規則。

停用現有物件複寫不會移除任何已複寫到遠端儲存桶的物件。

同步與非同步複寫

MinIO 支援為指定的遠端目標指定非同步 (預設) 或同步複寫。

使用非同步複寫時,MinIO 會在將物件放入複寫佇列之前完成原始的 PUT 作業。因此,原始用戶端可能會在物件複寫之前看到成功的 PUT 作業。雖然這可能會導致遠端上的物件過時或遺失,但它會減輕因複寫負載而導致寫入作業緩慢的風險。

使用同步複寫時,MinIO 會在完成原始的 PUT 作業之前嘗試複寫物件。無論複寫嘗試是否成功,MinIO 都會傳回成功的 PUT 作業。這會降低因複寫負載而導致寫入作業緩慢的風險,但可能以遠端位置上的物件過時或遺失為代價。

使用具有 add 旗標的 mc admin bucket remote add 命令設定遠端目標時,您必須明確啟用同步複寫。

複寫內部機制

本節說明內部複寫行為,對於使用或實作複寫而言並非至關重要。本文件僅供學習和教育用途。

複寫程序

MinIO 使用複寫佇列系統,該系統有多個並行複寫工作程式在該佇列上運作。MinIO 會不斷努力從佇列複寫和移除物件,同時掃描要新增至佇列的新未複寫物件。

在版本 RELEASE.2022-07-18T17-49-40Z 中變更:MinIO 會將失敗的複寫作業排入佇列,並最多重試這些作業三 (3) 次。

MinIO 會將在三次嘗試後仍無法複寫的複寫作業從佇列中移除。掃描器可以在稍後擷取這些受影響的物件,並將它們重新排入佇列以進行複寫。

版本變更於 RELEASE.2022-08-11T04-37-28Z: 當執行列表操作或任何 GETHEAD API 方法時,失敗或待處理的複寫會自動重新排隊。例如,在遠端位置恢復連線後,使用 mc statmc catmc ls 會重新排隊複寫。

MinIO 會根據物件的複寫狀態設定 X-Amz-Replication-Status metadata 欄位。

複寫狀態

描述

PENDING (待處理)

物件尚未被複寫。如果物件符合儲存桶上設定的其中一條複寫規則,MinIO 會應用此狀態。MinIO 會持續掃描尚未進入複寫佇列的 PENDING 物件,並在空間可用時將它們加入佇列。

對於多站點複寫,物件會保持在 PENDING 狀態,直到複寫到該儲存桶或儲存桶前綴的所有已設定遠端位置。

COMPLETED (已完成)

物件已成功複寫到遠端叢集。

FAILED (失敗)

物件複寫到遠端叢集失敗。

MinIO 會持續掃描尚未進入複寫佇列的 FAILED 物件,並在空間可用時將它們加入佇列。

REPLICA (複製品)

物件本身是來自遠端來源的複製品。

複寫流程通常有以下其中一種:

  • PENDING (待處理) -> COMPLETED (已完成)

  • PENDING (待處理) -> FAILED (失敗) -> COMPLETED (已完成)