【发布时间】: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