從遠端複本重新同步儲存桶
此頁面上的程序使用健全的複寫遠端重新同步 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
命令,以列出不健康的 BUCKET
在健康 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
值替換為不健康的BUCKET
在TARGET
MinIO 部署上的 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、負載平衡器或其他網路控制平面管理連線,以恢復將流量傳送到重新同步的部署。