我刚刚完成了一整天的灾难恢复测试,以便在Azure SQL托管实例上运行PITR。这是针对相当大的数据库(4TB)的。我通过使用Azure CLI做到了这一点。执行命令(请参阅下文)并确保没有错误后,我退出了CLI。
今天早上,还原成功完成,但是我正在努力查找还原所需时间的指标。有谁知道我在哪里可以找到这些指标?
我没有走运地检查审计日志,查看了数据库在SQL中的创建日期,因此我有一个大概的表示,但我希望我可以在此灾难恢复报告中引用实数。
# Restore script I ran
az sql midb restore -g sourceRG --managed-instance sourceMi --name sourceMiDb --dest-resource-group destinationRG --dest-mi destinationMi --dest-name destinationMiDb --time "2019-07-21T10:00:00" --verbose --debug
答案 0 :(得分:1)
受管实例有点棘手,因为一切都被混淆了。为了使数据库在MI上可用,它既需要恢复又必须复制到辅助节点。
要了解数据库何时恢复,请在此处查看Thomas LaRock的脚本: https://www.mssqltips.com/sqlservertip/1724/when-was-the-last-time-your-sql-server-database-was-restored/
DECLARE @dbname sysname, @days int
SET @dbname = NULL --substitute for whatever database name you want
SET @days = -30 --previous number of days, script will default to 30
SELECT
rsh.destination_database_name AS [Database],
rsh.user_name AS [Restored By],
CASE WHEN rsh.restore_type = 'D' THEN 'Database'
WHEN rsh.restore_type = 'F' THEN 'File'
WHEN rsh.restore_type = 'G' THEN 'Filegroup'
WHEN rsh.restore_type = 'I' THEN 'Differential'
WHEN rsh.restore_type = 'L' THEN 'Log'
WHEN rsh.restore_type = 'V' THEN 'Verifyonly'
WHEN rsh.restore_type = 'R' THEN 'Revert'
ELSE rsh.restore_type
END AS [Restore Type],
rsh.restore_date AS [Restore Started],
bmf.physical_device_name AS [Restored From],
rf.destination_phys_name AS [Restored To]
FROM msdb.dbo.restorehistory rsh
INNER JOIN msdb.dbo.backupset bs ON rsh.backup_set_id = bs.backup_set_id
INNER JOIN msdb.dbo.restorefile rf ON rsh.restore_history_id = rf.restore_history_id
INNER JOIN msdb.dbo.backupmediafamily bmf ON bmf.media_set_id = bs.media_set_id
WHERE rsh.restore_date >= DATEADD(dd, ISNULL(@days, -30), GETDATE()) --want to search for previous days
AND destination_database_name = ISNULL(@dbname, destination_database_name) --if no dbname, then return all
ORDER BY rsh.restore_history_id DESC
GO
关于确定何时将数据库复制到辅助节点……这很难说。对于从BLOB存储进行数据库还原,似乎该数据库将首先还原,然后复制到其他AG节点。但是,当像您的示例一样使用Azure CLI时,我不确定。我的猜测是它们可以在每个AG节点上并行还原,因此在应用最后一个日志文件时就可以使用。
您在日志中看到的所有内容都会引用一个GUID,因此要弄清楚您的数据库GUID,您需要查询sys.databases
SELECT physical_database_name, name FROM sys.databases