0
点赞
收藏
分享

微信扫一扫

如何设计可以动态扩容缩容的分库分表方案?

颜路在路上 2021-09-19 阅读 65

一.扩充数据库服务器法:

  • 1、设定好几台数据库服务器,每台服务器上几个库,每个库多少个表,推荐是32库 * 32表,对于大部分公司来说,可能几年都够了
  • 2、路由的规则,orderId 模 32 = 库,orderId / 32 模 32 = 表


  • 3、扩容的时候,申请增加更多的数据库服务器,装好mysql,倍数扩容,4台数据库服务器,扩到8台数据库服务器,16台数据库服务器,原来的数据库服务器的数据库数量倍数递减(比如原来有4台服务器,每台服务器部署8个数据库,现在扩容一倍,有8台数据库服务器,那么每台数据库服务器就只用放原来的一半数据库,4个数据库即可)

  • 4、由dba负责将原先数据库服务器的库,迁移到新的数据库服务器上去(比如这里的db0~db3),,不需要进行数据迁移,dba有很多工具,库迁移,比较便捷

  • 5、我们这边只需要修改一下配置,调整原来的库的服务器地址为迁移后的库所在数据库服务器的地址即可

  • 6、重新发布系统,上线,原先的路由规则变都不用变,直接可以基于2倍的数据库服务器的资源,继续进行线上系统的提供服务

总结:

如果我们想一开始设计成以后不需要改业务代码的表设计,那么我们需要对自己的数据量和吞吐量做一定的计算,然后对分的库数量和表数量做评估。
比如说假定一台数据库服务器可以承受2000写并发,一张表我们预计存500W数据,我们这个32个数据库,32张表,最多可以放32*500W约=40亿的数据,后面申请服务器资源的话也只是对并发数量进行扩容,而不是对表存储量扩容。

举报

相关推荐

0 条评论