首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql上的数据库分片

mysql上的数据库分片
EN

Database Administration用户
提问于 2012-10-08 00:57:13
回答 4查看 1.2K关注 0票数 1

我需要进行基于MySQL的数据库切分(水平)。我的数据库架构如下:

  1. 我有A,B,C桌
  2. A,B是全局的(不需要分片)
  3. C有大量的数据,因此需要进行切分以实现写入可伸缩性。
  4. 我将有几个切分,每一个包含一个副本的A,B,和一个子集C。

我的问题是:

  1. 我如何保持A,B在所有切分一致,即复制A,B在所有切分,以便他们应该有完全相同的数据。还是通过memcached将全局表存储在单个DB上并缓存?
  2. 如何实现每个切分的高可用性,例如,如果一个切分由于未知的原因而崩溃,我如何能够失败over.Through MySQL备份或主主AP模式副本?
  3. 如何对多个切分的全局表A、B进行负载平衡?

请注意,在本例中,我将不使用MySQL读取副本。

EN

回答 4

Database Administration用户

发布于 2012-10-12 21:44:15

你可以自己做这件事,而不是使用像dbShards或ScaleBase这样的商业产品,但是你最终会构建同样的东西,这不是简单的事情。

不过,要回答您的问题,在所有碎片之间复制A和B是有意义的,因此您需要应用程序在所有碎片上复制写入,或者需要一些复制技术来完成。我不认为您可以轻松地配置MySQL复制来做到这一点。

要实现负载平衡,您需要客户端在对这些表运行查询时随机选择一个碎片,就像您的客户端在访问表C时需要确定使用哪个碎片一样。

对于HA,您需要为每个碎片设置主/从设置,以便在丢失主碎片的情况下进行故障转移。

致以敬意,

安迪·格罗夫首席建筑师http://www.dbshards.com

票数 2
EN

Database Administration用户

发布于 2012-10-12 01:08:46

  1. 将全局表A、B保存在Global上,表示DB1。所有数据都需要通过memcached缓存。
  2. 通过mysql主机复制。只写入活动服务器。
  3. 由于全局数据对DB1,所以没有必要做负载平衡。只要getGlobalDBConnection()就够了。
票数 1
EN

Database Administration用户

发布于 2012-10-08 08:13:47

你在一个问题中问了多个问题-- ShardingHigh AvailabilityLoad Balancing。这些本身就是广泛的话题。

关于这些技术,因特网上有很多可用的资源。我建议您首先阅读它们,如果您对某些概念不清楚,或者在实现这些概念的过程中陷入困境,您可以随时回到StackOverflow上来。谢谢。

编辑:

我想与大家分享我刚才发现的一个链接:

如何实现MySQL切分

希望能帮上忙。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/25604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档