我在网上发现的信息表明,SQL Server 2008不支持真正的负载平衡。
这是真的? 我无法在MS网站上find体面的文档,所以任何链接将不胜感激。
此外,主动/主动和主动/被动之间的差异。
我认为你不能有多个SQL Server实例连接到同一个数据库,对吧? Cos将表示真正的负载平衡。
所以主动/主动是当你有两个单独的SQL Server实例访问两个完全独立的数据库? 如果一个失败了,那么它只是将负载分配给剩下的一个实例? 如果我们确实有两个完全独立的数据库,那么这个configuration实际上只是用于任何用途?
所以在我的情况下,我只有一个分贝,我必须去主动/被动作为高可用性选项?
这些都是相当基本的问题,但我还没有find相当基本的答案!
谢谢邓肯
你基本上描述的东西叫做SQL Server集群 。 它指的是一组两个或更多的服务器(节点)一起工作,并被看作是单个虚拟服务器给客户端。
在两台服务器scheme中,可以将SQL Server群集configuration为主动/主动或主动/被动 。 Microsoft SQL Server集群的两个节点都专门用于运行至less一个SQL实例(主动 – 主动),或者至less其中一个节点被保留为备用,以接受失败的SQL Server实例的故障转移(主动 – 被动) 。
这里有一些你可以阅读的文章:
一些描述其他选项的文章(尽pipe在应用程序级别):
集群是高可用性解决scheme,而不是可伸缩性解决scheme。 所谓的“主动/主动”实际上是备用节点的重用,用于部署另一个完全独立的实例。
对于读写Transact-SQL请求,不存在任何forms的负载平衡。 对于仅Rad-Transact-SQL(报告),可以select“ 可扩展共享数据库 ”。
SQL 2005和SQL 2008中支持“即装即用”负载均衡的唯一技术是Service Broker,通过部署负载平衡路由。 但我怀疑这对你是否有任何兴趣。
简单地向SQL群集添加更多节点不会增加处理能力,只是增加可用性,因为您有更多的节点保持在线状态。 读/写查询的处理仅限于一个节点,没有轮询负载均衡的概念。
以下是来自Microsoft的白皮书,标题为SQL Server 2008性能和规模http://www.microsoft.com/sqlserver/2008/en/us/wp-sql-2008-performance-scale.aspx
本白皮书讨论了扩展和扩展SQL Server之间的区别。 正如Remus所指出的,对于只读数据库(可以认为是大型数据仓库)有一个可扩展共享数据库的概念。
如果适合您的需要,您可以使用点对点复制进行分布式处理。 当然会引入其他复杂的问题。
您可能想了解MySpace以及他们如何使用SQL Server处理高负载。 这是一系列的技巧,但没有负载平衡。
第一:SQL Server不支持负载平衡如果框,所以让Windows操作系统做的工作。 您可以安装2个SQL Server实例并configuration“点对点复制”,以便在两台服务器上具有一致的数据。 你真的工作,然后与2(!)不同的数据库。 但是,在2个用户的同一条logging上的DML语句中可能会发生冲突(偶然发生在服务器1上,而另一个发生在服务器2上)。 您的任务是通过您的计划和前端编程来避免这种冲突。 SQL服务器不能接pipe这个任务,不幸的是。 另一方面,当所有参与节点使用共享存储时,“故障转移群集”是可能的。 因此,系统然后在一个不同的数据库上工作,没有负载平衡(!),但只有故障切换。 反映,是不一样的! 如果一个节点失败,另一个节点立即接pipe其任务。 到目前为止,我希望这可以帮助你。 托马斯