簡體   English   中英

如何將大於 5Tb 的 object 上傳到 Google Cloud Storage?

[英]How to upload larger than 5Tb object to Google Cloud Storage?

試圖將PostgreSQL 備份(~20 Tb)長期保存到谷歌雲存儲,我目前正在通過gsutil將 PostgreSQL pg_dump()命令傳輸到流傳輸

pg_dump -d $DB_NAME -b --format=t \
    | gsutil cp - gs://$BUCKET_NAME/$BACKUP_FILE

但是,我擔心該進程會因為 GCS 的5Tb object 大小限制而崩潰。

有沒有辦法將大於 5Tb 的對象上傳到 Google Cloud Storage

版本:使用split

我正在考慮將 pipe pg_dump到 Linux 的split實用程序和gsutil cp

pg_dump -d $DB -b --format=t \
    | split -b 50G - \
    | gsutil cp - gs://$BUCKET/$BACKUP

這樣的東西會起作用嗎?

您通常不希望通過流傳輸上傳多 TB 范圍內的單個 object。 流傳輸有兩個主要缺點,它們對您來說都是非常壞的消息:

  1. 流傳輸不使用 Cloud Storage 的校驗和支持。 您將獲得常規的 HTTP 數據完整性檢查,但僅此而已,並且對於定期 5 TB 上傳,這最終可能會導致備份損壞。
  2. 如果流傳輸失敗,則無法恢復流傳輸。 假設您全天候以 100 Mbps 的速度上傳,5 TB 的上傳至少需要 4 天半的時間,如果您的 HTTP 連接失敗,您需要從頭開始。

相反,這是我的建議:

  1. 首先,最小化文件大小。 pg_dump 有許多減小文件大小的選項。 “--format=c -Z9”之類的東西可能會產生一個小得多的文件。
  2. 其次,如果可能,在上傳之前將轉儲存儲為一個文件(或者,最好是一系列拆分文件)。 這很好,因為您將能夠計算它們的校驗和,gsutil 可以利用這些校驗和,並且如果需要,您還可以手動驗證它們是否正確上傳。 當然,這可能不切實際,因為您需要 5TB 的備用硬盤空間,但除非您的數據庫在幾天內不會更改,否則可能沒有簡單的替代方法可以重試以防您失去連接.

正如 Ferregina Pelona、guillaume blaquiere 和 John Hanley 所提到的。 如本文檔所述,無法繞過 Google 實施的 5 TB 限制:

雲存儲 5TB object 大小限制

Cloud Storage 支持最大為 5 TB 的單個對象大小。 如果您有大於 5TB 的對象,則 object 傳輸對於雲存儲或本地傳輸的這些對象將失敗。

如果文件超過限制 (5 TB),則傳輸失敗。

您可以使用 Google 的問題跟蹤器請求此功能,在提供的鏈接中,您可以檢查請求的功能或請求滿足您期望的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM