2013-08-02 128 views
9

那么集群背后的想法是什么?虚拟机的Mysql集群

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

  2. 此意见是如何工作的?当我进行选择查询时,群集会分析哪些服务器读/写较少并将查询指向该服务器?

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

回答

9

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

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

3)当垂直缩放是不可能的了,和复制变得不切实际:)


作为承诺,一些推荐的读数:

+0

谢谢,你在第3点上究竟是怎么说的:“复制变得不切实际”,你能举个例子吗? – Uffo

+0

您是在询问复制何时变得不切实际,或者完全关于复制?水平缩放可以通过负载平衡器后面的[循环复制](http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-replication-multi-master.html)来实现。但是当你开始实施这些事情时,你应该问自己实施一个集群。 – RandomSeed

+0

[This answer](http://stackoverflow.com/a/5326403/1446005)可能也是你感兴趣的。 – RandomSeed

2

1->你的第一点是正确的方式。但我想如果多台机器共享相同的数据,它将是复制,而不是集群。 在聚类中,数据在不同的机器之间进行划分,并且存在水平划分意味着数据的划分基于行,记录通过使用这些机器之间的一些算法划分。

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

我们称每台机器为一个集群,每个集群包含一个单独的mysql服务器,单个数据和一个集群管理器,并且所有集群节点之间都有数据共享,以便所有数据都可用节点在任何时候。

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

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

3-> RandomSeed是正确的。当您的复制变得不切实际时,您确实感到需要集群,这意味着如果您正在使用主服务器进行写入操作,从服务器进行读取操作,然后在流量变得巨大时导致服务器无法顺利运行,那么您将感受到集群的需要。只是为了加快整个过程。 这不是唯一的情况,这只是其中一种情况,这仅仅是一种情况。

希望这对你有帮助!

+0

谢谢您的时间,伟大的信息! – Uffo