首页 文章

数据库集群和负载 balancer

提问于
浏览
132

什么是数据库集群?如果允许同一数据库位于2个不同的服务器上,它们如何使数据保持同步 . 这与数据库服务器角度的负载均衡有何不同?

4 回答

  • 7

    数据库聚类实际上是两个或可能更多节点之间的同步复制模式,并且在系统中添加了容错功能,在无共享体系结构中也是如此 . 通过共享,这意味着各个节点实际上不共享任何物理资源,如磁盘或内存 .

    就保持数据同步而言,有一个管理服务器,所有数据节点都与SQL节点连接,以实现这一点(具体谈论MySQL) .

    现在关于差异:负载 balancer 只是通过群集可以实现的一个结果,其他包括高可用性,可伸缩性和容错 .

  • 4

    数据库集群有点模棱两可,一些供应商认为具有两个或更多服务器的集群共享相同的存储,而另一些供应商则将集群称为一组复制服务器 .

    复制定义了一组服务器保持同步的方法,而不必共享可以在地理上分散的存储,有两种主要方式:

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

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

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

    • 主从复制:只有一个权威数据副本,即推送到从属服务器 .

    缺点是它的容错性较差,如果主机死亡,则从站没有进一步的变化 .

    好处是它比多主机更容易做,它通常保留ACID属性 .

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

  • 119

    从SQL Server的角度来看:

    群集将为您提供主动 - 被动配置 . 在2节点集群中的含义,其中一个将是活动(服务),另一个将是被动的(等待主动节点发生故障时接管) . 从硬件角度来看,这是一种高可用性 .

    您可以拥有一个主动 - 主动群集,但它需要在每个节点上运行多个SQL Server实例 . (即,节点A上的实例1故障转移到节点B上的实例2,节点B上的实例1故障转移到节点A上的实例2) .

    负载 balancer (至少从SQL Server的角度来看)不存在(至少在Web服务器负载 balancer 的意义上) . 你无法 balancer 负载 . 但是,您可以将应用程序拆分为在服务器1上的某个数据库上运行,也可以在服务器2上的某个数据库上运行,等等 . 这是SQL世界中“负载 balancer ”的主要方法 .

  • 11

    群集使用某种类型的共享存储(例如,驱动器笼或SAN),并在其上放置两个数据库前端 . 前端服务器共享客户端用于连接的IP地址和群集网络名称,并且他们自己决定当前负责服务客户端请求的人员 .

    如果您询问某个特定的数据库服务器,请将其添加到您的问题中,我们可以添加有关其实现的详细信息,但在其核心,这就是群集 .

相关问题