SQL Server 相当于 Oracle RAC 的功能吗?

Sql*_*yan 12 sql-server feature-comparison rac oracle-rac high-availability

我做了一些谷歌搜索,但在几年前找不到这个问题的答案,所以我想我会问。Oracle 的 RAC 特性为读取和写入事务提供负载平衡,以及无需停机的横向扩展和高可用性(至少,据我所知 - 我们即将部署我们的第一个使用 RAC 的数据库,所以我们会看看情况如何)。

是否有提供等效功能的任何 SQL Server 功能集(或您可以安装在顶部的第三方组件)?我们一直使用 Windows 集群,其中故障转移事件会导致大约 20-30 秒的 SQL 停机时间 - 总是可以容忍的,但并不理想。现在,使用 SQL 2012 中的 AlwaysOn,SQL Server 将其缩短到大约 15 秒,并添加了只读辅助数据库的概念,但它们仍然要求通过单个连接点阻塞写入事务(大大改进,因为许多事务是只是阅读,但仍然不是真正的负载平衡),并且在节点故障或需要修补的情况下,仍然存在停机时间。

我想这只是更多的好奇心 - 我觉得这是 SQL Server 落后于 Oracle 的唯一领域(至少在我个人看到使用的功能中)。我想看看是否有任何选项可以缩小这一差距,并在我们等待添加 Microsoft 的等效功能的同时改进我们自己的 SQL Server 部署 - 也许在 SQL 2014/2015 中?

Jon*_*gel 8

不,SQL Server 中没有任何东西可以为您提供开箱即用的功能

目前,唯一允许在多个节点同时写入的 SQL Server 技术是对等复制。请注意,我没有说“写横向扩展”,因为它的工作方式是整个系统只有一个节点的写容量。该页面的介绍性段落措辞谨慎,包括“横向扩展”一词,但并未提及“写横向扩展”。是的,营销方面的发言。

我读到的内容来看,Oracle RAC 在这方面是一样的。在功能上,此配置中 SQL Server 唯一缺少的是负载平衡解决方案,这既是优点(您可以以任何方式实现它),又是缺点(它不在包装盒中或由 Microsoft 支持)当与竞争产品进行比较。

相反,Oracle RAC 也不会为您提供与 SQL Server开箱即用的相同功能。例如,由于实时网络延迟,建议在彼此相距 100km 的节点之间实现 RAC,而 Peer-to-Peer 复制没有这种限制。(我并不是说一个解决方案比另一个更好:我只是指出它们是不同的。企业应该选择最适合他们特定需求的解决方案。)


小智 6

我是一名 DBA,支持 SQL 2000-2012、Oracle 11g 和 Oracle 11g RAC。

IMO,SQL 2012 中的 Always On Availability Groups 非常接近 RAC 的可用性和可扩展性,但在美元和复杂性方面的成本要低得多。您可以通过查询镜像来扩展读取,但您希望将所有 DML 定向到主服务器(无法更新 SQL Server 镜像)。如果主 SQL Server 崩溃,故障转移到其中一个镜像几乎是即时的。如果一个节点崩溃,因为故障节点上未提交的事务被幸存的节点回滚,RAC 会经历类似的暂停。

SQL 2012 AAAG 相对于 RAC 的最大优势 (IMHO) 是它是一种无共享架构。RAC 共享存储。如果失败,整个集群就会关闭。这是 RAC 中的一个巨大的 SPOF,每个人似乎都忘记了。如果您想保护自己免受这种情况的影响,则需要设置备用服务器。如果您希望它成为 RAC,那么成本只会进一步增加。


Eri*_*ins 5

您的问题的直接答案是否定的,SQL Server 没有等效的功能。SQL Server 的某些方面可以为您提供所需的容错能力(甚至可以追溯到使用数据库镜像和镜像感知应用程序时的 SQL Server 2005),但与 Oracle RAC 不存在 1:1 的问题。