如何将大于 5Tb 的对象上传到 Google Cloud Storage?
How to upload larger than 5Tb object to Google Cloud Storage?
尝试将 PostgreSQL 备份(~20 Tb) 长期保存到 Google 云存储 ,我目前正在通过 gsutil
.
将 PostgreSQL pg_dump()
命令传递给 streaming transfer
pg_dump -d $DB_NAME -b --format=t \
| gsutil cp - gs://$BUCKET_NAME/$BACKUP_FILE
但是我担心进程会因为GCS的5Tb而崩溃object size limit.
有什么方法可以将大于 5Tb 的对象上传到 Google 云存储?
版本:使用 split
?
我正在考虑将 pg_dump
传输到 Linux 的 split
实用程序和 gsutil cp
.
pg_dump -d $DB -b --format=t \
| split -b 50G - \
| gsutil cp - gs://$BUCKET/$BACKUP
这样的东西行得通吗?
正如 Ferregina Pelona、guillaume blaquiere 和 John Hanley 所提到的。无法绕过 Google 实施的 5 TB 限制,如 document:
中所述
Cloud Storage 5TB object size limit
Cloud Storage supports a maximum single-object size up to 5 terabytes.
If you have objects larger than 5TB, the object transfer fails for
those objects for either Cloud Storage or Transfer for on-premises.
如果文件超过限制 (5 TB),传输将失败。
您可以使用Google的issue tracker请求此功能,在link提供的范围内,您可以检查请求的功能或请求满足您期望的功能.
您通常不想在没有流式传输的情况下上传 multi-terabyte 范围内的单个对象。流式传输有两个主要缺点,它们对您来说都是非常糟糕的消息:
- 流式传输不使用云存储的校验和支持。您将获得定期的 HTTP 数据完整性检查,仅此而已,对于定期的 5 TB 上传,最终以损坏的备份告终的可能性非零。
- 流式传输如果失败则无法恢复。假设你全天候以 100 Mbps 的速度上传,5 TB 的上传至少需要 4 天半,如果你的 HTTP 连接失败,你需要从头开始。
相反,这是我的建议:
- 首先,最小化文件大小。 pg_dump 有许多减小文件大小的选项。像“--format=c -Z9”这样的东西可能会产生一个小得多的文件。
- 其次,如果可能,在上传之前将转储存储为文件(或者最好是一系列拆分文件)。这很好,因为您将能够计算它们的校验和,gsutil 可以利用它,而且您还可以根据需要手动验证它们是否正确上传。当然,这可能不切实际,因为您需要一个备用的 5TB 硬盘驱动器 space,但除非您的数据库几天内不会更改,否则可能没有一种简单的替代方法可以重试,以防万一你失去了连接。
尝试将 PostgreSQL 备份(~20 Tb) 长期保存到 Google 云存储 ,我目前正在通过 gsutil
.
pg_dump()
命令传递给 streaming transfer
pg_dump -d $DB_NAME -b --format=t \
| gsutil cp - gs://$BUCKET_NAME/$BACKUP_FILE
但是我担心进程会因为GCS的5Tb而崩溃object size limit.
有什么方法可以将大于 5Tb 的对象上传到 Google 云存储?
版本:使用 split
?
我正在考虑将 pg_dump
传输到 Linux 的 split
实用程序和 gsutil cp
.
pg_dump -d $DB -b --format=t \
| split -b 50G - \
| gsutil cp - gs://$BUCKET/$BACKUP
这样的东西行得通吗?
正如 Ferregina Pelona、guillaume blaquiere 和 John Hanley 所提到的。无法绕过 Google 实施的 5 TB 限制,如 document:
中所述Cloud Storage 5TB object size limit
Cloud Storage supports a maximum single-object size up to 5 terabytes. If you have objects larger than 5TB, the object transfer fails for those objects for either Cloud Storage or Transfer for on-premises.
如果文件超过限制 (5 TB),传输将失败。
您可以使用Google的issue tracker请求此功能,在link提供的范围内,您可以检查请求的功能或请求满足您期望的功能.
您通常不想在没有流式传输的情况下上传 multi-terabyte 范围内的单个对象。流式传输有两个主要缺点,它们对您来说都是非常糟糕的消息:
- 流式传输不使用云存储的校验和支持。您将获得定期的 HTTP 数据完整性检查,仅此而已,对于定期的 5 TB 上传,最终以损坏的备份告终的可能性非零。
- 流式传输如果失败则无法恢复。假设你全天候以 100 Mbps 的速度上传,5 TB 的上传至少需要 4 天半,如果你的 HTTP 连接失败,你需要从头开始。
相反,这是我的建议:
- 首先,最小化文件大小。 pg_dump 有许多减小文件大小的选项。像“--format=c -Z9”这样的东西可能会产生一个小得多的文件。
- 其次,如果可能,在上传之前将转储存储为文件(或者最好是一系列拆分文件)。这很好,因为您将能够计算它们的校验和,gsutil 可以利用它,而且您还可以根据需要手动验证它们是否正确上传。当然,这可能不切实际,因为您需要一个备用的 5TB 硬盘驱动器 space,但除非您的数据库几天内不会更改,否则可能没有一种简单的替代方法可以重试,以防万一你失去了连接。