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