MYSQL分库分表方案 - pingdongyi/blog-2 GitHub Wiki

一种无需数据迁移和修改路由代码的数据库扩容方案

一般来说,“理想”的扩容方案应该努力满足以下几个要求:

  • 最好不迁移数据 (无论如何,数据迁移都是一个让团队压力山大的问题)
  • 允许根据硬件资源自由规划扩容规模和节点存储负载
  • 能均匀的分布数据读写,避免“热点”问题
  • 保证对已经达到存储上限的节点不再写入数据

扩容与系统采用的路由规则密切相关:基于散列的路由能均匀地分布数据,但却需要数据迁移,同时也无法避免对达到上限的节点不再写入新数据;基于增量区间的路由天然不存在数据迁移和向某一节点无上限写入数据的问题,但却存在“热点”困扰。我们设计方案的初衷就是希望能结合两种路由规则的优势,摒弃各自的劣势,创造出一种接近“理想”状态的扩容方式,而这种方式简单概括起来就是:全局按增量区间分布数据,使用增量扩容,无数据迁移,局部使用散列方式分散数据读写,解决“热点”问题,同时对分布式拓扑结构进行建模,使用一致的路由算法,扩容时只需追加节点数据,不再修改散列逻辑代码

⚠️ **GitHub.com Fallback** ⚠️