我们需要了解特定 AlwaysOn 配置的风险/陷阱。我们想要一个具有以下要求(如下)的 AlwaysOn 配置。
我的问题是:这是一个合理的配置,还是我遗漏了一些重要的东西,或者我是否遗漏了一个使此设置无效的关键?
源 SQL Server: 在虚拟机上运行 Pharmacy 应用程序连接到具有完全访问权限的主数据库
目标/副本 SQL Server: 在虚拟机 B 上运行 Microsoft 访问连接到具有只读访问权限的副本(以上)数据库以运行大量报告
见证: 文件共享
Microsoft 白皮书的注释(我们希望以这种方式连接两个节点——节点\实例名称与侦听器):
您可以使用 node\instance-name 连接到次要副本:将主要副本配置为 PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE) 并在连接字符串上使用“ApplicationIntent=ReadOnly”来报告工作负载。在这种情况下,如果您错误地将报告工作负载连接到已作为主副本运行的物理节点,连接将被拒绝。
故障转移: 故障转移是手动过程。如果 A 出现故障,我们将手动启动副本服务器 B 作为主服务器——对于初学者来说是异步的——即使会有一些数据丢失的空间。
您的设置中唯一可能关心的是可用性模式和故障转移选项。如果您的虚拟机位于同一个数据中心或地理位置相对较近且它们之间的连接良好,您应该考虑使用同步提交模式和自动故障转移以获得最佳恢复方案,没有数据丢失和最少的停机时间,特别是如果它在故障期间发生故障时间可能很难让某人手动对其进行故障转移。
如果它们在地理位置上相距甚远并且连接性不可靠,那么您的设置就很好,除非数据丢失被认为是灾难性的。异步路由主要用于性能不稳定或远不能保证的情况。
虽然指定连接有一定的价值,但如果出于某种原因您的报告应用程序失去与次要副本的连接,在这样的设置中它可能会过大。除了任何可能的性能问题之外,没有理由不报告主副本,但这可能是确保主副本拒绝连接的充分理由。