我使用 SQL Server DB,我需要的是我有一个 DB1 和客户端站点与这个 DB 通信,应用程序的报告模块也使用相同的 DB(即在网页中显示不同的报告)客户端想要指向将实例报告给另一个数据库,即 DB2。
我们需要做的是:创建一个新的 DB2,即 DB1 的副本,我们每天都会对 DB1 进行差异备份并将其恢复到 DB2。
为此,我尝试使用此查询对 DB1 进行差异备份,
BACKUP DATABASE [DB1] TO DISK = N'D:\DB_location\DB1-Diff.bak'
WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'DB1-Differential Database Backup',
SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
Run Code Online (Sandbox Code Playgroud)
并将其恢复到我使用的 DB2
RESTORE DATABASE [DB2] FROM DISK = N'D:\DB_location\DB1-Diff.bak'
WITH FILE = 1, norecovery, NOUNLOAD, STATS = 10
GO
Run Code Online (Sandbox Code Playgroud)
它第一次运行完美,但下次如果给我错误:
Msg 3117, Level 16, State 4, Line 1
The log or differential backup cannot be restored …Run Code Online (Sandbox Code Playgroud) 我正在使用压缩、写入多个文件以及更改BufferCount和MaxTransferSize选项来调整 SQL Server 备份。我有一个 SQL Server 实例,其中包含 4 TB 数据库和几个从几 MB 到 150 GB 的较小数据库。
我的问题是,我是否可以开始使用 150 GB 数据库进行调整,然后将这些设置应用到 4 TB 备份,只需进行最小的更改,或者 4 TB 是否需要从头开始拥有自己的“调整会话”?由于通常需要多次备份尝试才能拨入设置,因此我尝试在可能的情况下快速开始调整 4 TB 数据库。
我是 PostgreSQL 的新手,所以我的问题是:进行定期备份并将它们发送到 Google Drive 的最简单方法是什么。也许,有一种工具可以实现它或其他东西。
昨天,我使用以下命令创建了各种 PostgreSQL 数据库的备份:
pg_dump -Fc -d junk -h localhost -p 5434 -U postgres -W > z:\pg_dump\96_junk.dump
Run Code Online (Sandbox Code Playgroud)
我为每个数据库创建了单独的备份。
今天,我尝试使用以下命令将它们恢复到升级后的数据库服务器:
pg_restore -h localhost -p 5434 -U postgres -W -C -v z:\pg_dump\96_junk.dump
Run Code Online (Sandbox Code Playgroud)
当我pg_restore使用上面的命令运行时,数据库似乎已恢复。控制台屏幕显示一系列 SQL 语句和我希望看到的该数据库的其他消息,最后显示的输出是“PostreSQL 数据库转储完成”。
当我检查数据库时,数据库不存在。我究竟做错了什么?
使用版本信息
使用版本9.6.0创建的备份
尝试使用版本9.6.1进行恢复
我有一个场景,我必须生成数据库的备份(SQL Server 2008)并恢复到新服务器(SQL Server 2016)。在采取备份数据时,无论如何都不应更改。所以我有两个选择来做到这一点,但我不确定它会如何工作。(一切都只使用 SQL 作业。)
设置只读数据库并恢复到新的数据库服务器。
? 是否可以在新服务器上恢复只读数据库?目标服务器已经有一个同名的读写(在线)数据库。
设置离线数据库并恢复到新的数据库服务器。
? 是否可以在新服务器中恢复离线数据库?目标服务器已经有一个同名的在线(读写)数据库。
我们有一个大型数据库(500GB 并且正在扩展)。95% 以上的数据存储在 3 个表中(一个表有 20 亿多行)。数据在很大程度上是不可变的 - 即一旦添加,它就只能在之后读取。我们无法存档旧数据。
我们正在使用允许压缩备份的 SQL Server 2017,但即便如此,备份和通过网络复制到备份服务器也需要很长时间。
我们想加快这个过程(并且出于灾难恢复目的,在云中备份 - 可能是 Azure) - 差异备份足够小,但我认为我们仍然需要定期进行完整备份(例如每个周末完整备份)每晚的差异对我们来说仍然是一个问题)
我的感觉是使用分区来分割一些合理列上的大表(集群在身份 ID 上),然后我们可以只备份旧分区一次并将它们标记为只读,而无需再次全部备份。
这不是一个理想的情况,因为我们将来需要不断添加更多分区。此外,数据库无法关闭超过几分钟,所以我想我将不得不使用分区制作数据的影子版本,然后进行一些切换,以减少停机时间,这有点冒险和复杂。
如果有人对这种数据库配置有他们认为会更好的备份策略(或者可以确认考虑到我的限制,这似乎是一个好主意)我很高兴听到:)
附加信息:
当前备份计划:
完整备份(每晚) - 压缩备份大约100 GB(500 GB 未压缩),大约需要40 分钟(压缩)
日志备份(每 10 分钟) - 几乎是即时的,每个只有大约 20 MB。
现在我知道,对于某些人来说,40 分钟并不是很长的时间,100 GB 也不是一个很大的文件,但我也知道,鉴于 95% 以上的数据是不可变的,并且只能安全备份一次,备份可能需要不到几分钟的时间,并且可能需要几 GB(这是保守的)。
我相信分区是用于帮助管理备份的工具之一,特别是对于这种类型的场景,我希望让有实际经验的人(或我的场景中基于 SQL Server 的替代方案)能够说明一些问题什么对他们有用。
我需要一个Carers在同一台服务器上调用的实时数据库的副本以进行测试。测试数据库名称将为Carers_Test.
我使用 SSMS 备份了 Carers。并尝试使用 GUI 恢复它。当我按照这些步骤操作时,我唯一改变的是数据库的名称。
但恢复失败并出现错误:
无法获得独占访问权限,因为数据库正在使用中。
我不想对当前的实时数据库做任何事情,为什么数据库正在使用中?我尝试在本地主机上恢复相同的备份,并且成功恢复。当我尝试使用实时数据库在同一台服务器上恢复它时,我收到此错误。
请有人帮助我...我快疯了!
我设置了以下备份策略:
到目前为止,我的理解是: 差异备份不会截断事务日志,因此,差异备份和日志备份之间没有关系,两者可以并行共存而不会相互影响。
基于这种理解,我认为我将有两种选择来完全恢复到最近的状态。
这个替代 #1 可以按预期工作,没有问题。
此替代方法 #2 显示以下错误。
消息 4305,级别 16,状态 1,第 53 行 此备份集中的日志从 LSN 144000000122400001开始,它太新,无法应用于数据库。 可以还原包含 LSN 73000000188800001的早期日志备份。
分析备份历史后,我可以得出结论,如果在日志备份之前有差异备份,则必须在恢复备份之前恢复最新的差异备份。
到目前为止,我一直认为由于 Full/Diff 备份不会影响链日志,因此差异备份主要是通过减少要恢复的日志备份数量来缩短恢复时间。
但是,如此处所示,如果尚未恢复 DIFF 备份,则不允许仅基于日志备份执行完全恢复,因此,我的问题是:
需要 DIFF 备份以允许恢复序列 #2 中的 LOG 恢复背后的原因是什么?
如何将 6GB 的 zip 文件和 90GB 的 bak 文件的巨大 Microsoft SQL Server 数据库还原到只有 100GB 可用空间的计算机?
当我解压缩 zip 文件时,我得到一个 90GB 的 bak 文件,因此硬盘驱动器上只剩下 10GB,因此没有足够的空间使用 SQL Server Management Studio 进行还原。
优点是我有两台电脑,另一台有 200GB 可用空间,所以我能够完全恢复,但它不是预期的电脑。我已经能够使用以太网通过网络访问恢复的数据库,但我感兴趣的其他软件要求运行数据库的 SQL Server 与感兴趣的软件在同一台计算机上,因此我必须将数据库移动/恢复到不知何故空间较小的计算机。
恳请指导,我一直在探索从我完全恢复到新计算机的计算机手动复制和粘贴 .mdf 和日志文件的选项,然后以某种方式将其连接起来,但我不知道它是否会起作用.