无法从 S3 恢复 SQL Server bak 文件,称文件太大

Cas*_*per 2 sql-server amazon-rds

我尝试从存储在 S3 存储桶中的 bak 文件到 RDS SQL Server Web 版本运行恢复查询,但不断收到此错误:

[2017-09-13 20:30:22.227] 由于任务失败或并发 RESTORE_DB 请求而中止任务。[2017-09-13 20:30:22.287] 磁盘上没有足够的空间来执行恢复数据库操作。

bak文件有77GB,DB有2TB,为什么还不够呢?

这是来自 AWS 文档的查询:

exec msdb.dbo.rds_restore_database 
        @restore_db_name='database_name', 
        @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension';
Run Code Online (Sandbox Code Playgroud)

来源:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html#SQLServer.Procedural.Importing.Native.Using

sep*_*pic 5

磁盘上没有足够的空间来执行恢复数据库操作。

...

bak文件有77GB,DB有2TB,为什么还不够呢?

您需要2Tb空间才能恢复此备份。

事实上,该restore操作将重建您原来的 2Tb 数据库。

Backup仅备份数据,不备份空白空间。如果您的备份只有 77Gb,而不是compressed这意味着您的原始数据库只有 77Gb 的数据(甚至更少,因为备份也包含一定数量的日志)。

任何数据库都由数据文件和日志文件组成,如果您的数据库约为 2Tb,其中只有 77Gb 的数据,则意味着它有巨大的日志文件。我认为这是在full恢复模式下,有人没有定期进行日志备份(或者甚至根本没有进行任何日志备份!!)

因此,您应该检查一下原始数据库,simple如果您不需要时间点恢复并且不进行日志备份,则将恢复模式更改为,或者,如果您确实需要full恢复模式,则应该更频繁地备份日志。

定期进行日志备份或更改恢复模式将simple允许您将shrink日志调整到合理的大小,从那时起您将不再需要 2Gb 的空间来恢复它