從遠端複本重新同步儲存桶
本頁的程序使用健全的複寫遠端,重新同步 MinIO 儲存桶的內容。重新同步支援在複本組態中,MinIO 部署上的部分或全部資料遺失後進行復原。
例如,請考慮類似以下的 MinIO 主動-主動複寫組態
重新同步允許使用參與的 MinIO 部署之一上的健全資料,作為重建其他部署的來源。
重新同步是每個儲存桶的程序。您必須針對遠端上遭受部分或全部資料遺失的每個儲存桶重複重新同步。
BC/DR 操作期間的專業支援
MinIO SUBNET 使用者可以登入並建立與重新同步相關的新問題。透過 SUBNET 與 MinIO 工程部門協調可以確保成功重新同步和還原正常操作,包括效能測試和健全狀況診斷。
社群使用者可以在MinIO 社群 Slack上尋求支援。社群支援僅為盡力而為,並且沒有關於回應速度的 SLA。
需求
MinIO 部署必須在線上
重新同步要求來源和目標部署都必須在線上,並且能夠接受讀取和寫入操作。來源必須與遠端具有完整的網路連線能力。
遠端部署可能「不健全」,因為它遭受了部分或全部資料遺失。只要來源和目的地都保持連線,重新同步就可以解決資料遺失的問題。
重新同步需要現有的複寫組態
重新同步要求健全的來源部署對於不健全的目標儲存桶具有現有的複寫組態。此外,重新同步僅適用於使用現有物件複寫選項建立的那些複寫規則。
使用mc replicate ls
檢閱健全來源儲存桶的已設定複寫規則和目標。
複寫需要相符的物件加密設定
MinIO 支援使用SSE-KMS和SSE-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
儲存桶損壞延伸到複製規則,您必須重新建立這些規則以符合先前的複製組態。如需其他指導,請參閱 啟用雙向伺服器端儲存桶複製。在還原任何複製規則並驗證站點之間的複製之後,您可以設定反向 Proxy、負載平衡器或其他網路控制平面,以管理連線以繼續將流量傳送到重新同步的部署。