AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 244787
Accepted
James Jenkins
James Jenkins
Asked: 2019-08-08 09:15:05 +0800 CST2019-08-08 09:15:05 +0800 CST 2019-08-08 09:15:05 +0800 CST

可以将多少个备份附加到单个文件是否有限制?

  • 772

最近的一个问题让我看着 MS Documents 并想知道。

可以将多少个备份附加到单个文件是否有限制?

默认情况下,SQL Server 使用NOINIT将新备份附加到旧备份文件。

{ NOINIT | INIT } 控制备份操作是追加还是覆盖备份媒体上的现有备份集。默认设置是附加到介质上的最新备份集 (NOINIT)。资源

文档清楚地表明,缺少可用磁盘空间将导致附加备份失败。

如果在备份操作将备份附加到媒体集时磁盘文件已满,则备份操作将失败。备份文件的最大大小由磁盘设备上的可用磁盘空间决定;因此,备份磁盘设备的适当大小取决于备份的大小。资源

SQL Recover from .bak file with NOINIT的答案表明PositionfromRESTORE HEADERONLY表示文件中的单个备份。这是一个“smallint”字段,最大值应为32,767

大多数情况下,在谷歌搜索时,您会发现有人意外地附加了他们的备份,并且无法理解为什么备份如此之大。

假设有足够的磁盘空间,我没有找到任何关于可以附加多少备份的明确参考。限制是 32,767 还是完全其他?

sql-server backup
  • 3 3 个回答
  • 922 Views

3 个回答

  • Voted
  1. Best Answer
    James Jenkins
    2019-08-09T03:05:00+08:002019-08-09T03:05:00+08:00

    TL:博士;可能会将 32,000 多个备份放在一个文件中。如果这是一件好事,或者您是否可以从该文件的备份中恢复,则此处未提及。


    我昨晚开始在没有活动的现有数据库(231682)上进行 tlog 备份。我使用了一个while循环和一个计数器,所以我可以得到一个运行总数。

    DECLARE @counter int
    SET @counter = 1
    While 1=1
    Begin 
    BACKUP LOG [231682] TO  
    DISK = N'G:\SQLBackups\Test_Tlog.trn' WITH NOFORMAT, NOINIT,  
    NAME = N'231682-Log Database Backup', SKIP, NOREWIND, NOUNLOAD
    SET @counter = @counter + 1
    print @counter
    End
    
    • 16 小时后,计数为 5,967,文件大小为 356MB。这可能需要一段时间。一开始是每秒完成 24 个日志备份。
    • 1 天 16 小时:计数为 8,401,文件大小为 700MB,sp_whoisactive显示等待信息 (2029ms)BACKUPTHREAD
    • 4 天 18 小时:计数为 12,834,文件大小为 1.6GBsp_whoisactive显示等待信息 (52113 毫秒)备份之间的 BACKUPTHREAD 时间已减慢到每个日志备份约 70 秒。
    • 5天零几个小时;外部事件(服务器重新启动)导致 tlog 备份停止。已完成备份的计数为 13,717 文件大小为 1.8GB,备份之间的时间约为 80 秒。已验证 restore headeronly from disk='G:\SQLBackups\Test_Tlog.trn'没有尝试数据库还原,因为它会非常痛苦。设置计数器以开始SET @counter = 13717和重新开始将备份添加到具有相同代码的同一文件中。备份恢复,大约需要 80 秒
    • 1周; 由于外部问题第二次重启。计数为 15,186 个文件大小 2.3GB,每个备份大约需要 90 秒。
    • 一周半;计数为 17,919 个文件大小为 3.2GB,每个备份大约需要 2 分 25 秒。
    • 2周; 计数为 19,645 个文件大小为 3.8GB,每个备份大约需要 2 分 45 秒。
    • 3周; 计数为 22,919 文件大小为 5.2GB 每个备份大约需要 3 分 30 秒(每小时 17 个),因为我现在在作业中运行无休止的 t-log 备份,我已将其添加到代码中RAISERROR(N'Count equals :%d', 16, 1, @counter ) WITH LOG;,因此运行计数显示在SQL 错误日志谢谢@Erik Darling
    • 4周;计数为 25,587 文件大小为 6.6GB 每个备份大约需要 3 分 45 秒(每小时 16 个)
    • 5 周;计数为 28,242 文件大小为 8GB 每个备份大约需要 4 分 35 秒,(每小时 13.5 个)
    • 6周;计数为 30,037 文件大小为 9.1GB 每次备份大约需要 5 分钟(每小时 12 分钟)
    • ~7 周:专用备份磁盘空间不足。当空间不足时,备份开始失败,但作业继续运行并尝试。停止其他一切,通过删除一些文件腾出更多空间。SQL 日志中的计数是错误的,因为它同时计算了失败和成功的尝试。
      • 停止工作
      • 文件大小为 10.4GB,每次备份大约需要 5 分钟(每小时 12 分钟),成功或失败的时间相同。
      • 使用 Count 检查备份restore headeronly from disk='G:\SQLBackups\Test_Tlog.trn'是 32,021
      • 标头暗示所有成功的备份都很好。
      • 大多数备份显示 75,776BackupSize的值和 ~4,000 的 值CompressedBackupSixe,压缩大小因每个备份而异。
      • 我没有尝试使用 t-log 文件进行还原。我怀疑会有问题,我想在让一切变得像现在这样丑陋之前尝试一下。
      • 删除 t-log 文件,重新开始正常备份。

    我在这个实例上默认压缩备份。

    第 3 周 注意:文件大小和备份时间的增长与备份数量不成比例。查看 tlog 标头,我们看到位置 2 的备份大小为 75766 字节,开始到结束的时间为 1 秒或更短。位置 22919 中的备份也具有 75766 字节的大小和一秒或更短的开始到完成时间。将备份附加到同一文件的开销似乎导致速度变慢。异常增长可能与我在实例上运行的每周维护任务有关。

    异地备份,我的异地备份解决方案 (IBM Spectrum) 似乎没有备份 trn 文件。我怀疑这是因为文件不断被编辑。


    编辑,一段时间后。我正在考虑做另一个实验来测试大约 30,000 个备份的恢复。为了避免尝试恢复多个 t-log 的问题,我研究了使用差异备份。我创建了一个空数据库,进行了完整备份,然后进行了 10 次差异备份。然后我做了 10 个 t-logs 备份并使用RESTORE HEADERONLY FROM DISK我比较了大小,差异备份比 t-logs 大得多,我没有足够的空间来进行良好的测试。

    差异备份 2-10(第一个总是有点大)

    • 备份大小 = 1126400
    • 压缩备份大小 = 62271

    T-Logs 备份 2-10(第一个总是大一点)

    • 备份大小 = 75776
    • CompressedBackupSize = 3800(平均,变化)

    差异备份大约大 16 倍,最好的情况是我只能得到大约 2,000 个,我目前不做进一步的测试。

    • 7
  2. Spörri
    2019-08-13T05:08:34+08:002019-08-13T05:08:34+08:00

    除了最大可能的文件大小之外,不应有其他限制。备份文件以Microsoft 磁带格式写入,新的标题只是简单地附加到文件中。

    MTF 卷描述块

    • 3
  3. David Browne - Microsoft
    2019-08-08T13:16:59+08:002019-08-08T13:16:59+08:00

    可以将多少个备份附加到单个文件是否有限制?

    3285。

    实际上,就我所知。备份文件达到 10GB,每次备份需要 10 秒,所以我不愿意再等了。

    使用:

    use master
    go
    create database bt
    go
    backup database bt to disk='c:\temp\bt.bak' with noinit
    go 10000
    
    restore headeronly from disk='c:\temp\bt.bak' 
    
    restore database bt from disk='c:\temp\bt.bak' with file = 3285, replace
    
    • 2

相关问题

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • Oracle 中的数据库备份 - 导出数据库还是使用其他工具?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve