自动分片MySQL?

4

我现在正在处理大量数据,需要实时提供快速读写服务给客户。我们使用的后端存储系统是Oracle,但我们想要用更轻便的系统替换我们那些大而强壮的机器。

由于各种原因,我们不能使用Cassandra,我们正在测试(但我有点担心)MongoDB(它还很年轻,缺少一些关键功能),所以我考虑分片一堆MySQL实例。

是否有一个好的系统来管理这个过程,或者我必须自己开发?我找到了几个项目,但我不确定它们是否支持动态添加/删除碎片。


代码库使用的是哪种编程语言?这可能有助于我们针对分片解决方案提出有用的建议。 - mlschechter
@mlschechter,语言在进行分片时会有什么影响?你能解释一下吗? - Udit Kumawat
3个回答

6
你可以非常有效地使用MySQL实现数据库分片。如果你的分片方案比较简单,可以在应用程序层面上完成,但如果更加复杂,你可能需要使用工具。我们的网站上描述了许多选项,以及我们支持的高级选项。
你可以在这里了解更多选项:

http://www.dbshards.com/articles/database-sharding-whitepapers/

同样重要的是考虑分片环境中的整个生命周期,包括故障转移、主动-主动复制、备份、恢复以及如上所述的重新分片。

值得一提的是,我们的客户在云环境(I/O缓慢)中以及数据中心环境中读写非常高的容量,并且并发用户数量达到1000。分片绝对可以非常有效,写入线性扩展,读取通常优于线性(因为更多的数据被缓存在数据库中)。


0

Sharding-JDBC 是一个用于分片数据库和表的 JDBC 驱动程序。也许你可以尝试使用它。


0

好问题!我必须说我同意@cisaacson的观点,当你的方案变得更加复杂时,你可能需要考虑一些数据库管理方案。你可以自己进行分片,但据我所知,你正在处理一个复杂的场景。最近我为一个可能的项目研究了这个问题,这就是我接触到分片的原因(并找到了你的帖子)。请注意,分片可能会有一些挑战...因此,在规划这样的迁移时,您可能需要考虑分区,这有时可能是一个更简单的解决方案(如果需要,这里有一个关于分区/mysql sharding的有趣比较和Wikipedia的基本思路)。我知道其中一些挑战:如何复制脚本,如何将对象发布到所有分片?版本控制呢?这甚至没有考虑到明显的问题,比如访问数据所需的内存量,写入数据可能会给从机器带来多大的负担等等。看到你之前写过这篇文章,我很好奇你最终决定做什么 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接