我们正在为即将到来的networking产品构build我们的生产环境。 对于这个堆栈,一个主SQL Server 2008将用于实时数据库操作,而一个辅助SQL Server 2008将从主SQL Server(通过SQL Server的内置镜像function) 镜像 。 当主要SQL Server变得不可用时,我们将使Report Service对辅助SQL Server运行,同时使其具有热备用。
在应用程序级别,我们有两个选项:
问题是,选项#2是一个可行的select?
注意:我们知道在数据库级别提供高可用性的其他方法(如集群),但我们正在寻求一种具有成本效益的解决scheme。
“数据镜像”是什么意思?
您可以拥有数据库镜像,在这种情况下,客户端(即您的DAL)可以使用连接string中的FailoverPartner,并按照故障切换事件连接到新的主体。 您的报告将运行数据库快照,而不是数据库本身,因为镜像不可用。
您可以拥有一个故障转移群集,并且客户端连接到群集资源名称以启动,并且不知道启动的活动节点主机名称,但是这不会使您能够访问备用伙伴上的数据。
你可以有硬件镜像,但这是一个单独的主题。
有人说复制是一种select,我不在这个阵营。
而…几乎就是这样。 酝酿自己的内部数据镜像技术,无论是什么意思。
更新
如果使用数据库镜像,则只需在连接string中指定故障转移伙伴,请参阅将客户机连接到镜像数据库 。 面对故障转移事件,您的应用程序必须处理事务一致性。 故障转移事件将突然断开客户端,并在客户端代码中引发exception。 任何未决的交易将被中止。 客户端代码必须重新连接,读取持久状态并从数据库中find的状态恢复工作。 正确书面的应用程序将处理这个优雅,没有问题。
镜像总是处于脱机状态,无法访问。 如果要在镜像上运行报告,则必须创build数据库快照并在快照上运行报告。 快照必须定期刷新(删除和重新创build)。 请参阅数据库镜像和数据库快照 。
networking层负载均衡器与镜像无关,不能解决任何问题。
以上都不是吗?
请澄清你的意思是由镜像SQL服务器。 您是否使用某种types的SAN来进行镜像,或使用SQL Server的内置镜像function?
我可以看到如何在Web层上使用HAProxy,但是为什么要使用SQL Server呢? 还有其他更多支持SQL Server的高可用性选项,例如集群,镜像和复制。 我会先调查一下。