Azure 灾难和恢复备份中的 SQL Server 2016 问题

时间:2021-07-26 19:20:06

标签: sql-server azure

在查看性能监视器后,我正在运行一些 SQL 查询,以了解为什么 Azure 中的 CPU 已用尽。

最高执行次数查询结果

以下查询被确定为执行次数超过 500 次的最高执行,一旦我删除了灾难恢复,就不再生成此查询并且 CPU 资源返回低于 70% 但似乎不明白是什么原因造成的它。请查看。

INSERT INTO @t
SELECT  
aamd.db_name,
aamd.db_guid,
CASE
WHEN aamd.group_db_guid IS NULL
THEN CONVERT(BIT, 'false')
ELSE CONVERT(BIT, 'true')
END,
CASE
WHEN aamd.drop_date IS NULL
THEN CONVERT(BIT, 'false')
ELSE CONVERT(BIT, 'true')
END,
CONVERT(BIT, aatm.task_agent_data.value('(/DBBackupRecordV2/autoBackupSetting)[1]', 'nvarchar(32)')),
NULLIF(aatm.task_agent_data.value('(/DBBackupRecordV2/containerURL)[1]', 'nvarchar(1024)'), ''),
NULLIF(aatm.task_agent_data.value('(/DBBackupRecordV2/retentionPeriod)[1]', 'int'), 0),
NULLIF(aatm.task_agent_data.value('(/DBBackupRecordV2/encryptionAlgorithm)[1]', 'nvarchar(128)'), ''),
NULLIF(aatm.task_agent_data.value('(/DBBackupRecordV2/encryptorType)[1]', 'nvarchar(32)'), ''),
NULLIF(aatm.task_agent_data.value('(/DBBackupRecordV2/encryptorName)[1]', 'nvarchar(128)'), ''),
NULLIF(aatm.task_agent_data.value('(/DBBackupRecordV2/localCachePath)[1]', 'nvarchar(1024)'), ''),
NULLIF(aatm.task_agent_data.value('(/DBBackupRecordV2/schedulingOption)[1]', 'nvarchar(128)'), ''),
NULLIF(aatm.task_agent_data.value('(/DBBackupRecordV2/fullBackupFreqType)[1]', 'nvarchar(128)'), ''),
NULLIF(aatm.task_agent_data.value('(/DBBackupRecordV2/daysOfWeek)[1]', 'nvarchar(256)'), ''),
NULLIF(aatm.task_agent_data.value('(/DBBackupRecordV2/backupBeginTime)[1]', 'nvarchar(32)'), ''),
NULLIF(aatm.task_agent_data.value('(/DBBackupRecordV2/backupDuration)[1]', 'nvarchar(32)'), ''),
NULLIF(aatm.task_agent_data.value('(/DBBackupRecordV2/logBackupFreq)[1]', 'nvarchar(32)'), '')
FROM autoadmin_managed_databases aamd
RIGHT OUTER JOIN autoadmin_task_agent_metadata aatm
ON aamd.autoadmin_id = aatm.autoadmin_id
WHERE
(
QUOTENAME(@db_name) = QUOTENAME('') OR
QUOTENAME(@db_name) = QUOTENAME(aamd.db_name)
) AND
(
aatm.task_agent_data.exist('/DBBackupRecordV2') = 1
)
AND aamd.autoadmin_id <>

1 个答案:

答案 0 :(得分:0)

规模需求为维护灾难恢复解决方案所需的组件提供了最佳估计。

每个虚拟服务器代理 (VSA) 实例使用其物理机器核心或 vCPU 来处理每个虚拟机磁盘和 2 GB 内存来处理数据流。处理多个磁盘和 VM,具体取决于 CPU/vCPU 的可用性、RAM 的可用性和限制设置。性能由存储传输介质、磁盘速度和网络带宽驱动。您必须考虑这些因素。

假设在指定时间内每个组件的核心数和 RAM 量如下:

  • 虚拟服务器代理 (VSA): 1 个 CPU 内核和 2 GB RAM 可以处理 在 8 小时窗口内最多可存储 4 TB 数据。这假设读取和写入数据所需的磁盘速度和所需的带宽可用。

  • MediaAgent (MA):具有 16 GB RAM 的 2 个 CPU 内核最多可以处理 50 TB 在 8 小时窗口内。这假设读取和写入数据所需的磁盘速度、重复数据删除数据库 (DDB) 和索引的 SSD 空间以及所需的带宽都可用。

  • CommServe 服务器: 8 个 CPU 内核和 32 GB RAM 最多可运行 1000 虚拟机。

复制大小

假设以下组成部分和因素:

  • VM 大小 (s) = 每个 100 GB 的 RAM

  • 数据变化率百分比 (r) = 10%

    注意:这假设变化率很高。通常变化率为 2%–5%。

  • 带宽 (b) = 10 GBps

  • 恢复点目标 (RPO) = 60 分钟

要满足 60 分钟的 SLA(恢复时间),复制操作必须在 60 分钟内完成 10 TB(100 TB 的 10%)。如果有必要的存储速度和带宽,则需要 10 个小型访问节点,需要 4 个 vCPU 和 8 GB 的 RAM,才能在 30 分钟内从源站点读取数据并将其传输到辅助 (DR) 站点。

数据传输完成后,您必须考虑在辅助站点中的副本上重建或应用更改所需的时间。 以 10% 的更改率,如示例所示,需要 10 个访问节点,每个访问节点应至少具有 2 个内核和 4 GB 的 RAM,以便在 30 分钟内将 10 TB 的数据更改应用于副本。

设计备份策略

在为特定数据库选择了满足业务需求的恢复模式后,您必须计划并实施相应的备份策略。最佳备份策略取决于多种因素,其中以下几点尤为重要:

  • 应用程序每天需要访问数据库多少小时?

    如果存在可预测的非高峰期,我们建议您安排该时期的完整数据库备份。

  • 更改和更新可能发生的频率如何?

    如果更改频繁,请考虑以下事项:

  • 简单恢复模式下,考虑调度差分
    完整数据库备份之间的备份。差异备份捕获 仅自上次完整数据库备份以来的更改。

  • 在完全恢复模式下,你应该安排频繁的日志 备份。在完整备份之间安排差异备份可以 通过减少您必须执行的日志备份数量来缩短恢复时间 恢复数据后恢复。

  • 更改可能只发生在数据库的一小部分还是 在数据库的很大一部分中?

    对于更改集中在部分文件或文件组的大型数据库,部分备份和/或文件备份可能很有用。有关详细信息,请参阅部分备份 (SQL Server) 和完整文件备份 (SQL Server)。

  • 完整的数据库备份需要多少磁盘空间?

  • 您的企业过去需要多长时间来维护备份?

确保您根据应用程序的需要和业务要求制定了适当的备份计划。随着备份变旧,数据丢失的风险会更高,除非您有办法重新生成所有数据直到发生故障。由于存储资源限制而选择处理旧备份之前,请考虑过去是否需要可恢复性

有用的链接: