【问题标题】:Backup Transaction Log since last full backup (Striped)自上次完整备份以来的备份事务日志(条带化)
【发布时间】:2019-09-18 15:26:16
【问题描述】:

我正在尝试手动执行糟糕的人工日志传送。我需要将一个相当大的数据库从一个主机移动到 Azure 中的一个 VM。数据库目前是 16Gb,我们需要在一个小时内完成切换。

请注意,由于我们遇到的问题,复制、镜像和日志传送不是选项,我需要尝试并实现这个手动过程。

我正在尝试的是在几周前使用 bak 文件的条带化对数据库进行完整备份(这样如果发生复制失败,我们需要重新启动复制的不是完整的 16Gb),并且在几天内复制完整备份的这些文件。

对于我的完整备份,我试图将备份文件跨越 15 个文件:

BACKUP DATABASE MyProductionDatabase
TO 
DISK='E:\BackupTrial\V5_DEV_FULL_01.bak',
DISK='E:\BackupTrial\V5_DEV_FULL_02.bak',
DISK='E:\BackupTrial\V5_DEV_FULL_03.bak',
DISK='E:\BackupTrial\V5_DEV_FULL_04.bak',
DISK='E:\BackupTrial\V5_DEV_FULL_05.bak',
DISK='E:\BackupTrial\V5_DEV_FULL_06.bak',
DISK='E:\BackupTrial\V5_DEV_FULL_07.bak',
DISK='E:\BackupTrial\V5_DEV_FULL_08.bak',
DISK='E:\BackupTrial\V5_DEV_FULL_09.bak',
DISK='E:\BackupTrial\V5_DEV_FULL_10.bak',
DISK='E:\BackupTrial\V5_DEV_FULL_11.bak',
DISK='E:\BackupTrial\V5_DEV_FULL_12.bak',
DISK='E:\BackupTrial\V5_DEV_FULL_13.bak',
DISK='E:\BackupTrial\V5_DEV_FULL_14.bak',
DISK='E:\BackupTrial\V5_DEV_FULL_15.bak'
WITH FORMAT,
  MEDIANAME = 'V5_DEV_FullBackup',
  MEDIADESCRIPTION = 'Striped media set for V5_DEV database';
GO

然后在 Azure 中的新 VM 上恢复该数据库(虚拟机,上面装有 SQL Server,因为我不确定是否可以将 BAK 文件直接转到 AzureSQL)。

然后每天或每周(数据库使用率低)进行日志文件备份并将这些备份复制到新主机并恢复。所以基本上,手动尝试保持数据库同步。

在上线当天,在当前主机上进行最终日志文件备份,将最终的 bak 文件复制到新主机,然后两个数据库应该同步,每天只有少量副本。

然后切换站点以使用新数据库。

但我被困住了:

MS 例子是:

BACKUP LOG AdventureWorks2012  
   TO MyAdvWorks_FullRM_log1;  
GO  

它说:

本示例为 AdventureWorks2012 数据库到之前创建的命名备份 设备,MyAdvWorks_FullRM_log1。

我不确定“以前创建的备份设备”是什么意思。由于条带化,我有很多文件名。如何对完整备份进行日志文件备份?

可能还有其他备份进程正在此数据库上进行。这是否会导致我的日志文件备份出现问题(数据库的另一个完整备份可能会在我完成备份之前清除我的事务日志?)我的每日日志文件备份应该如何?

【问题讨论】:

  • 您当前的备份计划是什么样的?您多久进行一次完整备份、差异备份和日志备份?其中一项或多项可能是“我们不这样做”。只是想了解您当前的解决方案有多少可以摊销到这项工作中。
  • 您可以使用COMPRESSION进行备份以减少备份大小
  • 每晚备份框中的所有数据库。不幸的是,他们使用 SSIS 包进行这些备份,所以我不确定如何判断正在执行的备份类型。

标签: sql-server backup


【解决方案1】:

我不确定“以前创建的备份设备”是什么意思。

这意味着在这个例子中他们之前创建了虚拟备份设备。 所以现在他们使用

而不是使用语法 backup...**to disk** =...
backup ...to <device_name>

您可以完全忽略这一点,并将日志备份到不同的文件中:

BACKUP LOG AdventureWorks2012  
   TO disk = 'V:\backups\log\AdventureWorks2012_20190918.trn;

由于条带化,我有很多文件名。如何对完整备份进行日志文件备份?

Log backup 未完成“完全备份”。 首先你通过full backup创建一个“基础”,如果你把它分成很多文件都没有关系,然后你就用log backuplog backups通常很小,你不需要剥离)

可能还有其他备份进程正在此数据库上进行。将要 这导致我的日志文件备份出现问题(另一个完整备份 在我获得备份之前,数据库可能会清除我的事务日志 完成了吗?)

Full backups 对您来说不是问题,因为它们只是创建其他“基础”,您可以从中开始您的restore chain。别人拿log backups会有问题,因为它会打断log backup chain(不是full backup清除日志,日志截断只能由log backups完成)。

如果他们可以使用 copy_only,您应该与那些使用这些 log backups 的人交谈:Copy-Only Backups (SQL Server) 或者他们是否可以将这些备份留在某个磁盘上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    相关资源
    最近更新 更多