如何将大于5Tb的对象上传到谷歌云存储



试图将PostgreSQL备份(~20Tb(长期保存到Google Cloud Storage,我目前正在通过gsutil将PostgreSQLpg_dump()命令传送到流传输

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

然而,我担心该过程会因为GCS的5Tb对象大小限制而崩溃

有没有办法将大于5Tb的对象上传到谷歌云存储

版本:使用split

我正在考虑将pg_dump管道传输到Linux的split实用程序和gsutil cp

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

这样行吗

您通常不希望通过流传输上传TB范围内的单个对象。流媒体传输有两个主要的缺点,它们对你来说都是非常坏的消息:

  1. 流传输不使用云存储的校验和支持。您将定期进行HTTP数据完整性检查,但仅此而已,对于周期性的5 TB上传,最终导致备份损坏的可能性为零
  2. 如果流式传输失败,则无法恢复。假设你全天候以100Mbps的速度上传,5 TB的上传至少需要4天半的时间,如果你的HTTP连接失败,你需要从头开始

相反,我的建议是:

  1. 首先,最小化文件大小。pg_dump有许多减少文件大小的选项。这可能是类似于"--format=c-Z9";可能会生成一个小得多的文件
  2. 其次,如果可能的话,在上传之前将转储存储为一个文件(或者,最好是一系列拆分文件(。这很好,因为你可以计算它们的校验和,gsutil可以利用这一点,如果你愿意,你还可以手动验证它们是否正确上传。当然,这可能不实用,因为你需要5TB的备用硬盘空间,但除非你的数据库在几天内不会更改,否则在你失去连接的情况下,可能没有简单的重试方法

如Ferregina Pelona、guillaume blaquiere和John Hanley所述。如本文件所述,无法绕过谷歌实施的5-TB限制:

云存储5TB对象大小限制

云存储最多支持5 TB的单个对象大小。如果有大于5TB的对象,则对象传输将失败用于内部部署的云存储或传输的那些对象。

如果文件超过限制(5 TB(,则传输失败。

您可以使用谷歌的问题跟踪器来请求此功能,在提供的链接中,您可以检查请求的功能或请求满足您期望的功能。

相关内容

  • 没有找到相关文章

最新更新