使用MYSQL分片拆分TB的大表

使用MYSQL分片拆分TB的大表,mysql,database,bigdata,sharding,Mysql,Database,Bigdata,Sharding,我知道水平分区…可以创建许多表 我已经说过,在基于应用程序的分片中,您将在多个数据库服务器上拥有相同的数据库结构。但它不会包含相同的数据 例如: Users 1 - 10000: server A Users 10001 - 20000: server B 用于切分的技术是MySQL代理,例如一些工具(基于MySQL代理)是SpockProxy。我们也可以手动切分。需要一个主表,例如: ------------------- | userA | server1 | | userB | serv

我知道水平分区…可以创建许多表

我已经说过,在基于应用程序的分片中,您将在多个数据库服务器上拥有相同的数据库结构。但它不会包含相同的数据

例如:

Users 1 - 10000: server A
Users 10001 - 20000: server B
用于切分的技术是MySQL代理,例如一些工具(基于MySQL代理)是SpockProxy。我们也可以手动切分。需要一个主表,例如:

-------------------
| userA | server1 |
| userB | server2 |
| userC | server1 |
-------------------
但以上这些技术都是在应用程序级别处理的。。我想在DB服务器级别解决这个问题

我们可以透明地对多个服务器执行此操作吗?这将允许Mysql表进行扩展

在X台服务器上创建X个表,最终用户通过对单个DB服务器的简单查询获取数据

简而言之,我想在一个表中插入16 TB的数据,但我在一台机器上没有这么大的空间,所以我想安装两台服务器,每台服务器的容量为8 TB。但是用户查询到单个数据库并获取结果,而在后端可能会使用分片。

我还将讨论其他一些好的解决方案,例如
MYSQL集群


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

在继续之前,你需要调整你的想法。我不认为在MySQL上有一种简单的方法可以做到这一点——我相信,如果你努力使用
联合的
表和视图,就可以做到这一点。然而,RDB切分充其量也不容易

然而,切分非常困难。切分表格几乎总是错误的看待它的方式。相反,您确实需要切分数据集。这是因为跨节点的连接非常昂贵

因此,我强烈建议回到这个问题上。如果你真的不需要连接,那么看看其他像Cassandra这样的数据库,它们支持这种开箱即用的东西。但是,如果您确实需要联接,那么您确实需要查看数据库中的每个表并找到好的分区标准,然后在此基础上进行分区,这样您就有了相同的db模式,然后是不同的碎片


一旦设置好了代理,就可以在数据库前面放置一个代理,以适当地处理路由查询。将其视为一种可能性(尽管作为免责声明,我没有在MySQL上使用过这些工具)。有了代理,你的应用程序就有了一个db的外观,当我读到你的问题时,这才是你真正的目标。

据我所知,所有切分都是在应用程序级别上完成的。MySQL不能透明地做到这一点。不。@Namphibian是否有其他解决方案,例如MySQL群集等。今天我会看一看,但上次我使用群集时速度很慢,真的不值得付出努力。@Namphibian:谢谢,我很期待它。