首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从系统对象查询RTO & RPO镜像

如何从系统对象查询RTO & RPO镜像
EN

Database Administration用户
提问于 2017-11-08 21:05:15
回答 1查看 664关注 0票数 0

前向澄清:在这个问题中,我使用RPO来描述“估计的数据丢失”,使用RTO来描述“估计的恢复时间”。我意识到它们不是精确的定义,但为了这个问题,它们已经足够接近了。

在本文的末尾,有一个非常好的代码块用于计算给定的始终启用的实例的RPO:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/b3177c3d-5450-4948-a234-34a8dd41bf37/estimateddataloss?forum=sqlreplication

代码语言:javascript
复制
--@EstimatedDataLoss (RPO)
WITH DR_CTE ( replica_server_name, database_name, last_commit_time)
AS
(
select ar.replica_server_name, database_name, rs.last_commit_time
from master.sys.dm_hadr_database_replica_states rs
inner join master.sys.availability_replicas ar on rs.replica_id = ar.replica_id
inner join sys.dm_hadr_database_replica_cluster_states dcs on dcs.group_database_id = rs.group_database_id and rs.replica_id = dcs.replica_id
where replica_server_name != @@servername
)
select ar.replica_server_name, dcs.database_name, rs.last_commit_time, DR_CTE.last_commit_time 'DR_commit_time', datediff(ss, DR_CTE.last_commit_time, rs.last_commit_time) 'lag_in_seconds'
from master.sys.dm_hadr_database_replica_states rs
inner join master.sys.availability_replicas ar on rs.replica_id = ar.replica_id
inner join sys.dm_hadr_database_replica_cluster_states dcs on dcs.group_database_id = rs.group_database_id and rs.replica_id = dcs.replica_id
inner join DR_CTE on DR_CTE.database_name = dcs.database_name
where ar.replica_server_name = @@servername
order by lag_in_seconds desc

通过我自己的一些修改,可以为RTO派生类似的查询:

代码语言:javascript
复制
 --@EstimatedRecoveryTime (RTO)
select ar.replica_server_name, dcs.database_name, rs.redo_queue_size, rs.redo_rate, rs.redo_queue_size/rs.redo_rate as TRedo
from master.sys.dm_hadr_database_replica_states rs
inner join master.sys.availability_replicas ar on rs.replica_id = ar.replica_id
inner join sys.dm_hadr_database_replica_cluster_states dcs on dcs.group_database_id = rs.group_database_id and rs.replica_id = dcs.replica_id
where ar.replica_server_name != @@servername

这些度量标准对于我的始终处于开放状态的环境会很好,但是我希望在2012年之前的一些环境中应用同样的SQL镜像。

是否有类似的系统对象来计算相同的SQL镜像度量?

注意:我对RTO和RPO的引用来自于Mircosoft这篇文章:

https://msdn.microsoft.com/en-us/library/dn135338(v=sql.110).aspx

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-11-09 00:49:31

服务提供商_[医]脑磁监测结果]将生成您想要的数据。您可以定期将其记录到表中(如果您想收集历史数据),或者临时运行它,将数据存储在临时表中,以便能够查询以获得所需的指标。

如果希望将其与依赖于Perfmon的监视工具集成,还可以使用Perfmon计数器来跟踪它。

顺便说一句,我会避免在这种情况下使用RPO和RTO (不管微软怎么说)。镜像/AGs应该被视为高可用性,而不是灾难恢复。删除表的用户不能受到可用性组或镜像的保护--他们会很高兴地在您的辅助节点上重播这个错误。

对不熟悉这项技术的人使用这些术语可能会产生误导。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/190467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档