繁体   English   中英

数据库集群和负载平衡

[英]Database cluster and load balancing

什么是数据库集群? 如果您允许同一数据库位于2台不同的服务器上,它们如何保持数据之间的同步。 从数据库服务器的角度来看,这与负载平衡有何不同?

数据库集群是一个含糊不清的术语,一些供应商认为具有两个或更多服务器共享同一存储的集群,另一些供应商则将集群称为一组复制服务器。

复制定义了一种方法,该方法使一组服务器保持同步,而不必共享能够在地理位置上分散的存储,主要有两种处理方法:

  • 主-主(或多主)复制:任何服务器都可以更新数据库。 通常由数据库中的其他模块(或在某些情况下在它们之上运行的完全不同的软件)来处理。

    缺点是很难做好,并且在这种复制模式下,某些系统会丢失ACID属性。

    好处是它很灵活,您可以在更新数据库的同时支持任何服务器的故障。

  • 主从复制:仅存在权威数据的单个副本,该副本被推送到从属服务器。

    缺点是容错能力较差,如果主机死亡,则从机不会有进一步的变化。

    好处是,它比多主机更容易执行,并且通常保留ACID属性。

负载平衡是一个不同的概念,它包括分发发送到那些服务器的查询,以便负载尽可能均匀地分布。 通常是在应用程序层(或使用连接池)完成的。 复制和负载平衡之间的唯一直接关系是,您需要进行一些复制才能实现负载平衡,否则您将只有一台服务器。

从SQL Server的角度来看:

群集将为您提供主动-被动配置。 这意味着在2个节点的群集中,其中一个将是主动的(服务),而另一个将是被动的(在主动节点发生故障时等待接管)。 从硬件的角度来看,它具有很高的可用性。

您可以有一个双活群集,但是它将需要在每个节点上运行多个SQL Server实例。 (即,节点A上的实例1故障转移到节点B上的实例2,节点B上的实例1故障转移到节点A上的实例2)。

负载平衡(至少从SQL Server的角度来看)不存在(至少在与Web服务器负载平衡相同的意义上)。 您无法以这种方式平衡负载。 但是,您可以拆分应用程序以使其在服务器1的某些数据库上运行,也可以在服务器2的某些数据库上运行,等等。这是SQL世界中“负载平衡”的主要手段。

群集使用某种共享存储(例如,驱动器笼或SAN),并在其上放置两个数据库前端。 前端服务器共享客户端用来连接的IP地址和群集网络名称,并且它们在自己之间决定谁目前负责服务客户端请求。

如果您要询问特定的数据库服务器,请将其添加到您的问题中,我们可以添加有关其实现的详细信息,但是从本质上讲,这就是集群。

数据库集群实际上是在两个或更多节点之间进行同步复制的一种模式,它向系统中添加了附加的容错功能,并且在无共享体系结构中也是如此。 “不共享”表示各个节点实际上不共享任何物理资源,例如磁盘或内存。

就保持数据同步而言,有一个管理服务器,所有数据节点与SQL节点都连接到该服务器以实现此目的(专门讨论MySQL)。

现在讨论差异:负载均衡只是通过群集可以实现的一项结果,其他则包括高可用性,可伸缩性和容错能力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM