我感兴趣的是有没有任何解决方案可以使用两台物理机,其中Microsoft SQL Server 2012可以在同一个数据库上运行。像群集这样的东西只是让节点活跃起来......有什么想法吗?
答案 0 :(得分:1)
Microsoft SQL Server不支持开箱即用的“真实”负载平衡方案。 AFAIK,对于SQL Server 2012仍然如此。(如果我错了,有人会启发我。)如果我们讨论的是数据库镜像或AlwaysOn或集群,那都无关紧要。
(为了敲定这一点,MS似乎最近将SQL Server集群称为“SQL Server故障转移集群”.Stepantics。)
如果要对数据库进行负载平衡,则必须自己进行某种分片,联合或复制。 (请注意,联合(通过视图)自SQL Server 2000以来一直在产品中,它不是很受欢迎。)当然,这意味着要修改数据库或应用程序本身,这几乎总是要么很多工作或违反您的供应商协议。有150个数据库,它就是更难以克服的。
您可以拥有一个主动 - 主动群集,但问题是您必须在节点上仔细分发数据库以分配负载。有150个数据库,这可能比你只有五个数据库更精细,但如果你有一个负载很重的数据库和149个轻量级或很少使用的数据库,你可能仍会发现一台机器陷入困境,其他不是。并且,有些数据库有时很忙,而其他时候几乎没有忙。这意味着当用户决定运行一些繁重的过程时,一切都可能归结为。
当然,无论出于何种原因,您必须能够在故障转移时支持单个节点上的所有负载,即使它是像修补Windows那样平凡的事情。如果您只在已知的慢速流量期间进行修补,那就太好了。如果您没有缓慢的时间段,或者由于硬件确实存在故障而发生故障转移,则另一个节点可能不会承担负载,您的用户将会运气不好。如果你这样想的话,让第二台机器“无所事事”并不那么令人恼火。至少你知道它将占用主要通常所做的所有流量。
答案 1 :(得分:0)
是的,您可以在两个数据库中主动共享相同的信息并来回复制它。这称为“合并复制”。在此配置中,两个节点都可以接受读写事务。