2009-10-23 21 views
18

我知道水平分区......你可以创建很多表。如何跨多个服务器分区Mysql?

你怎么能用多台服务器做到这一点? 这将允许Mysql进行扩展。

在X服务器上创建X表?

有没有人关心解释,或有一个很好的初学者教程(一步一步),教你如何跨多个服务器分区?

+2

如果有人在“关闭”时发表评论,那将会很不错。恕我直言,这个问题不仅适用于Stackoverlow。 – Till 2009-10-25 19:13:10

回答

23

使用MySQL,人们通常会根据应用程序分片

简而言之,您将在多个数据库服务器上拥有相同的数据库结构。但它不会包含相同的数据。

因此,例如:

Users 1 - 10000: server A 
Users 10001 - 20000: server B 

拆分(当然)不是备份技术,它的意思是分配读取和跨集群写道。

例如,用于碎片的技术是MySQL-Proxy。这并不是HScale发明的,它或多或少是一种简单的LUA脚本,它将读取和写入分配给不同的后端服务器。 MySQL forge应该有很多例子。

另一个工具(基于MySQL代理)是SpockProxy。完全针对分片量身定制。他们也摆脱了Lua,他们在各种事情上工作,以使其比代理更快。到目前为止,我只测试过SpockProxy,但从未在生产中运行它。

现在除了这些代理之外,你也可以分解自己。所需的将是主表,例如:

------------------- 
| userA | server1 | 
| userB | server2 | 
| userC | server1 | 
------------------- 

然后构建您的读取和写入服务器。不是很漂亮,但有效。下一个梗概就是让它变得更加不起眼。例如,,server2server3每个应该是一个小群集。

最后但并非最不重要的一点,另一个有趣的方法是在服务器之间对数据和索引进行分区,这就是Digg的IDDB。我不确定他们是否曾经发布过它的代码,但是他们的博客文章提供了有关它的功能的详细信息。

让我知道这是否有帮助!

0

这里是什么在书面宣布HSCALE 0.1:现在我们需要的只是分裂 巨大的表,但后来我们想 分布在多个分区 MySQL服务器实例有真正

横向扩展。最难的部分 将处理交易 ,我们必须使用分布式事务 (XA)或不允许涉及对 不同主机的分区 交易...

看一看这个项目:http://sourceforge.net/projects/hscale/也许它将适合你。

4

但是您需要注意的是,如果您出于某种原因希望将此解决方案应用于云并使其成为多租户,那么上述配置可能会变得更具挑战性。想想这一点 -

  1. 您根据该用户组织表登录到系统和数据库被选中(DB交换)
  2. 这将是你用它自己的谈话到现在新的主表奴隶
  3. 但是,上述第2点现在也需要分片,因为您要确保您的扩展不会成为瓶颈。

所以,现在的问题是,你可能需要考虑如何在msvn从属类型的env中进行这种分片,其中从属通常用于读取和写入的主人。

干杯! Gary