我对DBA的问题有一个疑问:如果我从单个Web / DB服务器设置扩展到两个Web /两个DB服务器设置,并在Web服务器前面使用负载平衡器来均匀地路由传入的查询...像MySQL Cluster这样的解决方案如何工作,以便另一个数据库服务器的更改立即为另一个数据库服务器所知(否则,路由到另一个数据库服务器的用户将看不到数据或将过时的数据),或者至少这样做其他网络服务器知道它正在读取“脏数据”,它应该在X秒内再次尝试以获取最新数据?
谢谢。
答案 0 :(得分:3)
两种方式。 主动/主动或主动/被动。 主动/被动是最普遍的 数据在被动节点上保持同步。 集群是有用的配置,因为主动节点下降,被动立即切换,因此没有停机时间。 群集不断同步群集中的2个节点。
我使用SQL服务器,但我认为群集的基本前提对于mySQL是相同的 - 即硬件故障没有(或没有明显的)停机时间。
编辑:此外,群集软件处理同步。你不用担心。您将群集节点视为虚拟目录,其行为类似于Windows中的一个服务器。
这是解释此
的文件http://www.sql-server-performance.com/articles/clustering/clustering_intro_p1.aspx
答案 1 :(得分:2)
在Windows服务器群集中(与高性能群集不同),有一个共享的外部存储阵列。主动节点获取存储的所有权/控制权,当该节点发生故障时,存储“故障转移”到先前被动节点(现在是主动节点)。还有不同的方案允许每个节点独立存储,而不是共享存储。但是,这些要求应用程序具有足够的智能以了解它是群集的,并使两个存储集保持同步。
答案 2 :(得分:0)
群集也是许多节点处理工作负载的地方,这有时称为主动/主动群集,即所有节点共享工作负载并处于活动状态。这通常由Oracle RDBMS数据库的Oracle RAC(RAC@Wikipedia)等专业软件处理。 RAC允许Oracle扩展到非常大的工作负载。