繁体   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