【问题标题】:Mysql cluster for dummies傻瓜的Mysql集群
【发布时间】:2013-08-02 08:20:15
【问题描述】:

那么集群背后的想法是什么?

  1. 您有多台机器具有相同的数据库副本,您在其中传播读/写?这是正确的吗?

  2. 这个想法如何运作?当我进行选择查询时,集群会分析哪个服务器的读/写次数较少并将我的查询指向该服务器?

  3. 当您应该开始使用集群时,我知道这是一个棘手的问题,但也许有人可以给我举个例子,比如 100 万次访问和 1 亿行数据库。

【问题讨论】:

    标签: mysql cluster-computing scalability


    【解决方案1】:

    1)Correct。每个数据节点不保存集群数据的完整副本,但每一位数据都存储在至少两个节点上。

    2)Essentially correct。 MySQL Cluster 支持分布式事务。

    3) 当垂直缩放不再可能,复制变得不切实际时:)


    正如所承诺的,一些推荐阅读:

    【讨论】:

    • 谢谢,你在第 3 点上到底说了什么:and replication becomes impractical?你能给我举个例子吗?
    • 您是在询问复制何时变得不切实际,还是完全复制?例如,可以通过负载均衡器后面的circular replication 来实现水平扩展。但是当你开始实现这些东西时,你应该问问自己是否要实现一个集群。
    • This answer 您可能也会感兴趣。
    • 很棒的信息,当然我必须深入研究这个和游戏,你能给我推荐一些书或很棒的网站吗?无论如何我都会接受这个帖子:)
    • 我刚刚注意到我之前给出了一个关于(非集群)循环复制的错误链接。请check this instead。我将在我的答案中添加更多链接。
    【解决方案2】:

    1->您的第一点在某种程度上是正确的。但我认为如果多台机器共享相同的数据,它将是复制而不是集群。 在聚类中,数据是在各个机器之间划分的,水平划分是指数据的划分是基于行,记录是通过某种算法在这些机器之间划分的。

    数据的划分是这样完成的,每条记录都会得到一个唯一的键,就像键值对的情况一样,每台机器也有一个唯一的 machine_id 相关的,用于定义哪个键值对将去哪台机器。

    我们称每台机器为一个集群,每个集群由一个单独的 mysql-server、单独的数据和一个集群管理器组成。所有集群节点之间也有数据共享,因此所有数据都可用于每个节点随时。

    数据的检索是通过 memcached 设备/服务器完成的,以实现快速检索和 还有一个特定集群的复制服务器来保存数据。

    2->是的,有可能,因为所有集群节点之间共享所有数据。你也可以使用负载均衡器来平衡负载。但是负载均衡器的想法很普遍,因为大多数服务器都在使用它们。但是,如果您只是为了您的知识而尝试,那么没有必要,因为您不会注意到创建负载均衡器要求的负载类型,集群管理器本身可以完成整个事情。

    3->RandomSeed 是对的。当您的复制变得不切实际时,您确实觉得需要集群意味着如果您使用主服务器进行写入并使用从属服务器进行读取,那么在某个时间流量变得巨大以至于服务器无法顺利工作时,您将感觉需要集群。只是为了加快整个过程。 这不是唯一的情况,这只是其中一种情况,这只是一种情况。

    希望对你有帮助!!

    【讨论】:

    • 感谢您抽出宝贵的时间,很棒的信息!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多