我知道水平分区是一种将表按行分割成多个较小部分的技术,以便可以创建许多表。
那么如何在多台服务器上实现呢?这样可以使Mysql具备可伸缩性。
是在X台服务器上创建X个表吗?
有没有人能够解释一下,或者有没有一个好的初学者教程(逐步说明)可以教你如何在多台服务器之间进行分区呢?
那么如何在多台服务器上实现呢?这样可以使Mysql具备可伸缩性。
是在X台服务器上创建X个表吗?
有没有人能够解释一下,或者有没有一个好的初学者教程(逐步说明)可以教你如何在多台服务器之间进行分区呢?
在MySQL中,人们通常会采用所谓的基于应用的分片。
简单来说,您将在多个数据库服务器上拥有相同的数据库结构。但不会包含相同的数据。
例如:
Users 1 - 10000: server A
Users 10001 - 20000: server B
"分片"(Sharding)当然不是一种备份技术,而是旨在将读写分布到集群中的技术。
用于分片的技术包括MySQL-Proxy等。这并不是HScale发明的,它更像是一个简单的LUA脚本,可以将读写分布到不同的后端服务器上。在MySQL forge上应该有很多例子。
另一个基于MySQL Proxy的工具是SpockProxy。完全针对分片而设计。他们也放弃了Lua,并且做了各种事情使它比代理更快速。目前,我只测试过SpockProxy,但从未在生产环境中运行过。
除了这些代理之外,您也可以自己进行分片。需要一个主表,例如:
-------------------
| userA | server1 |
| userB | server2 |
| userC | server1 |
-------------------
然后将读写构建到服务器上。这并不是很漂亮,但它能工作。下一个障碍是使其更具容错性。例如,server1
、server2
和server3
应该分别成为一个小的集群。
最后,另一种有趣的分区数据和索引跨服务器的方法是Digg的IDDB。我不确定他们是否曾经发布过它的代码,但他们的博客文章详细介绍了它的功能。
如果这有帮助,请告诉我!
以下是HSCALE 0.1发布公告中的内容:
目前我们只需要拆分大型表格,但以后我们希望将分区分布在多个MySQL服务器实例上,以实现真正的水平扩展。最困难的部分将是处理涉及到不同主机上的分区的事务,我们必须使用分布式事务(XA)或禁止涉及到不同主机上的分区的事务...
请查看这个项目:http://sourceforge.net/projects/hscale/,也许它适合您。