那么集群背后的想法是什么?
您有多台机器具有相同的DB副本,您可以在其中传播读/写?它是否正确?
这个想法如何运作?当我进行选择查询时,群集会分析哪个服务器具有较少的读/写并将我的查询指向该服务器?
当你应该开始使用集群时,我知道这是一个棘手的问题,但是有人可以给我一个例子,例如100万次访问和1亿行数据库。
那么集群背后的想法是什么?
您有多台机器具有相同的DB副本,您可以在其中传播读/写?它是否正确?
这个想法如何运作?当我进行选择查询时,群集会分析哪个服务器具有较少的读/写并将我的查询指向该服务器?
当你应该开始使用集群时,我知道这是一个棘手的问题,但是有人可以给我一个例子,例如100万次访问和1亿行数据库。
1) 正确。每个数据节点都不保存集群数据的完整副本,但每个数据位都存储在至少两个节点上。
2) 基本上是正确的。 MySQL Cluster支持分布式事务。
3)当不再可能进行垂直缩放时,复制变得不切实际:)
正如所承诺的,一些推荐读物:
MySQL中的循环复制 (关于冲突的更高级警告)
MySQL集群多计算机方法 (分步教程,假设有多台物理机,但您可以通过以下方式运行在同一台机器上运行的所有进程的测试 这些说明)
该 MySQL性能博客 是该领域的参考
1) 正确。每个数据节点都不保存集群数据的完整副本,但每个数据位都存储在至少两个节点上。
2) 基本上是正确的。 MySQL Cluster支持分布式事务。
3)当不再可能进行垂直缩放时,复制变得不切实际:)
正如所承诺的,一些推荐读物:
MySQL中的循环复制 (关于冲突的更高级警告)
MySQL集群多计算机方法 (分步教程,假设有多台物理机,但您可以通过以下方式运行在同一台机器上运行的所有进程的测试 这些说明)
该 MySQL性能博客 是该领域的参考
1->你的第一点在某种程度上是正确的。但我认为如果多台机器共享相同的数据,它将是复制而不是集群。 在聚类中,数据在各种机器之间划分,并且存在水平分区意味着数据的划分基于行,在这些机器之间使用一些算法划分记录。
数据的划分是这样完成的,即每个记录都会获得一个唯一的密钥,就像一个键值对一样,每台机器也有一个唯一的machine_id相关,用于定义哪个键值对将去哪个机。
我们将每台机器称为一个集群,每个集群由一个单独的mysql-server,单个数据和一个集群管理器组成。并且所有集群节点之间都有一个数据共享,以便所有数据随时可用于每个节点。 。
数据的检索是通过memcached设备/服务器完成的,以便快速检索和 还有一个用于特定群集的复制服务器来保存数据。
2->是的,有可能因为在所有集群节点之间共享所有数据。并且你也可以使用负载均衡器来平衡负载。但是负载均衡器的想法很平常,因为它们被大多数服务器使用。但是如果你只是为了你的知识而尝试,那就没有必要,因为你不会注意到产生负载平衡器要求的负载类型,集群管理器本身可以完成所有工作。
3-> RandomSeed是对的。当你的复制变得不切实际时,你确实觉得需要一个集群意味着如果你使用主服务器进行写入,那么当流量变得很大以致服务器无法顺利运行时你会感觉需要聚类。只是为了加快整个过程。 这不是唯一的情况,这只是一种情况,这只是一个案例。
希望这对你有所帮助!!