标签: availability-groups

存储过程调优帮助

实际计划:https://www.brentozar.com/pastetheplan/? id=SJviG_y1h

我正在寻找有关从哪里开始调整上述存储过程的建议。我们需要它在尽可能接近 1 秒的时间内完成,但目前在生产中最多需要 40 秒。SP 似乎会根据服务器工作负载而波动,因此需要它尽可能高效地运行。在 UAT 没有负载的情况下,针对同一数据库的副本,它在 5 秒内运行。

来自 Brent Ozar 的 sp_blitzcache 的警告包括:并行、计划警告、参数嗅探、隐式转换、函数连接、琐碎计划、未使用的内存授予、最近 4 小时创建的计划、多行表假脱机、非 SARGable

它在 Always On 可用性组数据库的主副本上运行(2 个节点设置,在辅助副本上启用同步提交和只读)。我们无法创建任何额外的索引。

SQL 版本为: Microsoft SQL Server 2017 (RTM-CU29) (KB5010786) - 14.0.3436.1 (X64) Enterprise Edition:Windows Server 2019 Standard 10.0(内部版本 17763:)(虚拟机管理程序)上基于核心的许可(64 位)

其他值得注意的配置:

  • SQL 最大内存设置为 92GB
  • 服务器有 8 个 CPU(全部位于 1 个 numa 节点上)
  • CTFP设置为50
  • MAXDOP 设置为 4
  • 主数据库启用了 RCSI

sql-server availability-groups query-performance performance-tuning

3
推荐指数
1
解决办法
219
查看次数

将较小的数据库保留在可用性组之外(并通过备份恢复)以避免集群/AG 问题导致数据库脱机?

我们有多个可用性组,每个可用性组都混合有大型数据库和小型数据库,所有这些都至关重要。它们都是异步提交,因为它们的辅助数据中心位于不同的数据中心,虽然我们希望快速恢复/故障转移,但一些数据丢失是可以接受的。

我们在两个节点+文件共享见证集群中的一些节点上遇到了问题,其中集群由于某种未知原因脱机,导致每个 AG 数据库都脱机。主节点本身没有问题,因此主节点上的其他非 AG 数据库仍然可用。一些最关键的数据库很小(<100GB),所以我想我们可能希望将它们从 AG 中取出并让它们成为普通数据库,这样集群问题不会影响它。我们会将其日志备份计划更改为 5 分钟之类的时间,以最大限度地减少恢复点目标 (rpo),并将任何恢复作为从备份进行的正常恢复来处理。

AG 在工作时表现出色,但在不工作时则需要排除故障并重新上线。对这个设计有什么想法吗?谢谢!

sql-server backup clustering restore availability-groups

3
推荐指数
1
解决办法
266
查看次数

我可以对 SQL Server 可用性组中的主副本使用不同的端点 URL 吗?

我正在设置一个 SQL Server 可用性组,其中包含集群内的三个同步副本(一个主副本和两个辅助副本)以及来自另一个数据中心的另一个集群的附加异步副本。我需要使用远程集群中异步副本的公共 IP 来公开主副本。

我的目标是使用专门用于远程异步副本的公共 IP 公开主副本。相反,集群中的其他同步副本使用集群中主副本的 DNS 名称与主副本进行通信。

创建可用性组时,我需要指定每个副本的端点 URL。是否可以为 SQL Server 可用性组中的不同副本显式使用主副本的不同端点 URL?我想确保只有远程异步副本使用公共 IP 与主副本进行通信。相反,集群中的其他副本继续使用集群中主副本的 DNS 名称。

示例:创建了三个节点的可用性组,mssql-primary-0 和 mssql-primary-1 是 Kubernetes 集群中的两个 pod,它们使用无头服务(pod 的 DNS 名称)进行通信。mssql-remote-0 pod 来自使用负载均衡器服务的外部 IP 公开的另一个集群。

CREATE AVAILABILITY GROUP [AG1]
      WITH (CLUSTER_TYPE = NONE)
      FOR REPLICA ON
      N'mssql-primary-0'
            WITH (
            ENDPOINT_URL = N'tcp://mssql-primary-0.headless-service:5022',
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
               SEEDING_MODE = AUTOMATIC,
               FAILOVER_MODE = MANUAL,
            SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
               ),
      N'mssql-primary-1'
            WITH (
            ENDPOINT_URL = N'tcp://mssql-primary-1.headless-service:5022',
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
               SEEDING_MODE = AUTOMATIC,
               FAILOVER_MODE = …
Run Code Online (Sandbox Code Playgroud)

sql-server high-availability availability-groups

3
推荐指数
1
解决办法
61
查看次数

AlwaysOn 可用性组延迟副本

使用 AO SQL 2012,是否可以将其中一个成员配置为延迟副本?我知道理想情况下我们希望同步它,但在人为错误的情况下,这将使我们能够检查辅助节点并从辅助节点恢复未提交的数据。在我们之前的一个设置中,我们使用了日志传送,其中还原到一个辅助服务器的时间延迟了一个小时。因此,在出现任何数据问题时,我们能够更快地恢复数据,而不是恢复整个数据库并恢复到时间点。任何输入表示赞赏...提前致谢

sql-server sql-server-2012 availability-groups

2
推荐指数
2
解决办法
1801
查看次数

如何在 SQL Server AlwaysOn 中配置 SSIS

我为我的 SQL Server 设置了 AlwaysOn 可用性组。现在我想配置SSIS。我该怎么做?下面的链接提供了一些信息,但由于我不是 DBA,因此很难理解这篇文章:

AlwaysOn 可用性组和 SQL Server 作业,第 23 部分:维护计划备份和 SSIS 包

有人可以指导我在可用性组中进行 SSIS 的基本设置并解释节点之间如何同步吗?

更新

我指的是 SSIS 目录数据库 (SSISDB)

我可以在我的连接管理器中使用监听器吗?

sql-server ssis availability-groups sql-server-2014

2
推荐指数
1
解决办法
1万
查看次数

调度索引重建作业

我有一个 MS-SQL 2014 SP1 - 两个节点 AlwaysOn AG(一个主节点和一个只读辅助节点)有大约 10 个数据库,总大小为 20-30GB。我有一些关于调度索引重建和统计信息收集的问题。

我计划通过维护计划每周安排一次。通常在主节点上根本没有负载的周日晚上。

我应该在主要还是在副本中运行作业?如果我只在辅助上运行它,那么我会得到什么好处?或相反亦然?(意思是我应该在两个节点上运行)

如果我通过维护计划使用 SP1 和索引重建,是否可能发生损坏? 正如这里提到的

sql-server availability-groups sql-server-2014 index-maintenance

2
推荐指数
1
解决办法
2814
查看次数

Microsoft SQL Server AG 同步镜像不同步

我们正在升级到 SQL Server 2012 并决定我们希望将自己与用于节点 2 上的报告服务的复制分开。AG 和镜像看起来是一个很好的解决方案——我们采用了同步。还决定应用程序将写入节点 1,并从节点 2 读取以最大程度地减少数据争用。

编写了一个应用程序来插入数据,然后他们立即在节点 2 上检查他们插入的数据是否存在。

现在根据我的理解,AG 上的同步镜像应该接收请求,将数据发送到节点 2——节点 2 提交,然后告诉节点 1 完成,然后节点 1 返回给用户。

发生的事情根本不是——他们发送了数据,从节点 2 进行了检索——数据不匹配。错误。

我检查并仔细检查了设置,并让另一位一直使用 AG 和同步镜像的 DBA 查看了这些东西——我们最好的结论是,从我们看到的 Microsoft 的“同步”镜像来看,它不是同步的。有没有其他人看到这个?

sql-server mirroring availability-groups

2
推荐指数
1
解决办法
166
查看次数

3 个节点的仲裁 AlwaysOn 可用性组

如果我要使用只读路由设置一个包含 3 个节点的 Alwayson 可用性组。我需要配置法定人数吗?

sql-server availability-groups sql-server-2016

2
推荐指数
1
解决办法
3225
查看次数

SQL Server 可用性组的故障转移需要多长时间?

在尝试确定最合适的高可用性选项时,我们专注于减少停机时间(计划内或计划外)。我已经能够收集有关故障转移群集实例 (FCI) 的统计信息(通过阅读大量 MSDN 文档和博客)。

我还没有找到有关可用性组的故障转移统计信息/次数的文档。

作为比较 (FCI):
故障转移 2008R2 集群的时间范围从 30 秒到 5 分钟不等(取决于流量以及硬件/网络设置):

进行手动故障转移时,它会完成对 LUN 的写入,将 LUN 切换到新的主动节点,并在新的主动节点上启动 SQL Server 实例。

在进行自动故障转移时,启动节点后,它将对数据库进行一致性检查并回滚任何进行中的事务。

可用性组
我知道,当您比较相同的硬件和流量时,可用性组应该能够更快地进行故障转移。

我无法找到比较两者的任何真实世界的实际指标。

具体来说,是否有人对正在积极使用的可用性组中的主写入节点进行故障转移所需的时间有任何指标
(故障转移到同步辅助)理想情况下,这将包括对任何 Microsoft 或可信赖来源的引用。请不要基于意见,只有指标。

sql-server failover availability-groups metrics

2
推荐指数
1
解决办法
4367
查看次数

AlwaysOn 上的事务复制

在我们的 AlwayOn 环境中,我有两个 SQL 服务器 2014 Ent.edition(SERVER A 和 SERVER B)。我为 [database A ] 设置了一个事务复制,指向监听器,如果发生故障转移,它应该不会引起任何问题。经过测试,故障转移后工作正常,但是当我关闭 AOAG 中的一台服务器时,在测试环境中,复制停止工作。复制监视器上没有错误。出于测试目的,我在数据库中插入了几条记录,它在 AOAG 上运行良好,但在订阅服务器上,直到我启动另一台服务器时,才会复制数据修改。一旦服务器启动,复制就开始工作。我很确定,我可能会遗漏一些东西,这不可能是设计使然。

任何想法/建议?

这是我在 AOAG 上复制的内容。

  • 分发服务器 A(包含分发数据库)- SQLSERVER
    1. 这是在远程服务器上。
  • 两个订阅者 - Sv1 和 sv2 - SQLSERVER 2008R2 标准
  • Pbulishers(服务器 A 和 B - 来自 AOAG) - SQLSERVER 2014

replication sql-server availability-groups

2
推荐指数
1
解决办法
1775
查看次数