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

时间:2017-09-13 20:39:31

标签: 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文件是77 GB,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';

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

1 个答案:

答案 0 :(得分:1)

  

磁盘上没有足够的空间来执行还原数据库   operaton。

     

...

     

bak文件是77 GB,DB有2TB,为什么还没有   足够?

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

事实是restore操作将重建原始数据库2Tb。

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

任何数据库都包含数据文件和日志文件,如果您的数据库大约是2Tb且只有77Gb的数据,则表示它具有巨大的日志文件。我认为它在full恢复模式中,并且有人不进行常规日志备份(甚至根本没有进行任何日志备份!)

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

定期日志备份或将恢复模式更改为simple将允许您将shrink日志设置为合理的大小,从那一刻起,您将不再需要2Gb的空间来恢复它