代码之家  ›  专栏  ›  技术社区  ›  YodasMyDad

减少SQL备份的大小?

  •  9
  • YodasMyDad  · 技术社区  · 15 年前

    我正在使用SQL Express 2005,每天晚上备份所有数据库。我注意到一个分贝越来越大。我看了看数据库,不明白为什么它会变得这么大!我想知道它是否与日志文件有关?

    寻找如何在没有那么多数据的情况下发现它为什么会变得这么大的提示-同时也要如何优化/减少大小?

    6 回复  |  直到 8 年前
        1
  •  16
  •   marc_s    15 年前

    要检查的几个事项:

    • 数据库是否处于“简单”恢复模式?如果是这样,它将产生更少的事务日志条目,并且备份将更小。建议用于开发,但不用于生产

    • 如果它处于“完全”恢复模式-是否定期进行事务日志备份?这将限制事务日志的增长,从而减少总体备份大小

    • 你跑步了吗? DBCC SHRINKDATABASE(yourdatabasename) 最近怎么样?这可能有帮助

    • 您的数据库中是否有任何日志/日志表只是随着时间的推移而被填满?你能删除一些条目吗?

    通过转到对象资源管理器,右键单击数据库,选择“属性”,然后选择对话框上的“选项”选项卡,可以找到数据库的恢复模型:

    alt text http://i31.tinypic.com/14dlkci.jpg

    马克

        2
  •  9
  •   Michael P    12 年前

    如果是备份不断增长,我也有同样的问题。当然,这不是一个“问题”,这是通过设计来实现的——您只需要制作一个备份“集”,它将简单地扩展,直到占用所有可用空间。

    为了避免这种情况,您必须更改覆盖选项。在SQL Management Studio中,右键单击数据库“任务-备份”,然后在备份窗口中,您将看到它默认为“常规”页。将此项更改为“选项”,您将得到一组不同的选项。

    顶部的默认选项是“附加到现有媒体集”。这就是使备份的大小无限期地增加的原因。将此项更改为“覆盖所有现有备份集”,备份的大小将始终与一个完整备份(最新备份)的大小相同。

    (如果有SQL脚本执行此操作,请将“noinit”转换为“init”)

    注意:这意味着备份只会是最新的更改-如果你三天前犯了一个错误,但是你只有昨晚的备份,那么你已经吃饱了。只有当您有一个备份机制,每天将.bak文件复制到另一个位置时,才能使用此方法,这样您就可以从前几天返回到这些文件中的任何一个。

        3
  •  3
  •   John Sansom    15 年前

    听起来您使用的是完全恢复模式,由于没有进行任何事务日志备份,因此事务日志不断增长。

    要纠正这一点,您需要:

    我建议阅读以下Microsoft参考资料,以确保您正确地管理数据库环境。

    Recovery Models and Transaction Log Management

    进一步阅读: How to stop the transaction log of a SQL Server database from growing unexpectedly

        4
  •  0
  •   Darknight    15 年前

    保持数据库小的一个技巧是在设计时,使用可以使用的最小数据类型。

    例如,您可能有一个状态表,当smallint或tinyint执行此操作时,是否确实需要索引为int?

    达尔奈特

        5
  •  0
  •   Arrabi    15 年前

    当您每天对数据库进行完全备份时,当然,随着时间的推移,它会变得非常大。 所以你必须为自己制定一个计划。这样 第一天:满 /第2天:差分 /第3天:差分 /第4天:差分 /第5天:差异

    然后重新开始。

    当你恢复数据库时,如果你想恢复完整的数据,你可以很容易地恢复,但是当你需要恢复diff版本时,你可以先备份第一个完整的数据,然后“不恢复”,再备份你需要的diff,然后你就可以安全地恢复数据了。

        6
  •  0
  •   Chaoix    8 年前

    7压缩备份文件以便存档。我最近备份了一个数据库到178MB.bak文件。存档到.7z文件后,它的大小只有16MB。 http://www.7-zip.org/

    如果您需要一个比7zip更高效、更快地处理更大文件的归档工具,我建议您看看LZ4归档。多年来,我一直使用它来归档文件备份,没有出现任何问题: http://lz4.github.io/lz4/