如何跨多个服务器分区Mysql?

时间:2009-10-23 00:58:43

标签: mysql scalability scaling partitioning

我知道水平分区......你可以创建很多表。

如何使用多台服务器执行此操作? 这将允许Mysql扩展。

在X服务器上创建X表?

有没有人愿意解释,或者有一个好的初学者教程(循序渐进)教你如何跨多个服务器进行分区?

3 个答案:

答案 0 :(得分:23)

使用MySQL,人们通常会执行基于分片应用程序。

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

例如:

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

Sharding(当然)不是备份技术,它意味着在集群中分发读写。

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

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

现在,除了这些代理之外,你也可以自我评价。必需的是主表,例如:

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

然后构建对服务器的读写操作。不是很漂亮但是有效。下一个障碍是让它变得更加严格。例如,server1server2server3每个都应该是一个小群集。

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

请告诉我这是否有帮助!

答案 1 :(得分:4)

但是您需要记住,如果由于某些原因想要将此解决方案用于云并使其成为多租户,那么上述配置可能会变得更具挑战性。想想这个 -

  1. 您已登录系统并根据用户组织表
  2. 选择了数据库(数据库交换)
  3. 这将是你现在正在与它自己的奴隶交谈的新主表
  4. 但是上面的第2点现在还需要分片,因为你要确保你的横向扩展不会成为瓶颈。
  5. 所以现在的问题是你可能需要考虑如何在一个mster-slave类型的env中进行这种分片,其中slave通常用于读取和写入主页。

    欢呼! 加里

答案 2 :(得分:0)

这是HSCALE 0.1宣布的内容:

  

现在我们需要分手   巨大的桌子,但后来我们想要   分配多个分区   MySQL服务器实例要真实   水平缩小。最难的部分   将处理交易   我们必须使用分布式的   交易(XA)或不允许   涉及分区的事务   不同的主人......

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