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

标签 sql-server amazon-rds

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

[2017-09-13 20:30:22.227] Aborted the task because of a task failure or a concurrent RESTORE_DB request. [2017-09-13 20:30:22.287] There is not enough space on the disk to perform restore database operaton.

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';

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

最佳答案

There is not enough space on the disk to perform restore database operaton.

...

The bak file is 77 GB and the DB has 2TB, how come this is still not enough?

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

事实上,恢复操作将重建您的原始数据库,即 2Tb。

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

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

因此,如果您不需要时间点恢复并且不进行日志备份,或者如果您确实需要,您应该查看您的原始数据库,将恢复模式更改为简单 >完整恢复模式,您应该更频繁地备份日志。

定期进行日志备份或将恢复模式更改为简单将允许您将日志缩小到合理的大小,从那时起您将不需要 2Gb 的空间来恢复不再这样了

关于sql-server - 无法从 S3 恢复 SQL Server bak 文件,称文件太大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46206467/

相关文章:

python - 连接 python 和 sql server 2012

sql-server - 使用存储过程从 View 中检索或筛选数据是否比使用存储过程从表中获取或筛选数据更快?

amazon-web-services - 将数据库放在 EC2 或 RDS 上?

mysql - 将 mysql 数据库导入 Bigquery 的最佳方法

amazon-web-services - 让 Sequelize.js 库在 Amazon Lambda 上工作

java - mysql jdbc 即使在 rewriteBatchedStatements = true 之后也不批处理查询

sql-server - 选择将 varchar 列转换为 bigint 失败的记录

mysql - 适用于 SQL Server、mySQL 和 postgreSQL 的可移植 SQL

sql - 想要在现有的选择语句中再添加两列

php - 尝试将 EC2 服务器连接到 RDS mySQL 时出错