前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何设计可以动态扩容缩容的分库分表方案?

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

作者头像
名字是乱打的
发布2021-12-24 08:53:26
1K0
发布2021-12-24 08:53:26
举报
文章被收录于专栏:软件工程软件工程

目前消息中心的量级还不是很大,大概每天200多W数据的样子,并发也就几十到两百,其实一两年内都不一定有并发的问题,按道理来说只要分表就可以了,但是凡是还是必须考虑长远点,目前还是需要考虑分一下库,那么分多少库呢? 设计可以动态扩容缩容的分库分表方案其实就是对我们服务的发展做一定的评估,根据吞吐量来计算要求的数据库梳理(比如一个数据库服务器2000并发,我们预计达到1W就设计5个库),根据数据量大小计算表数据(比如一个表我们最多放500W数据,预计5000W数据就放10个表)

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

  • 1、设定好几台数据库服务器,每台服务器上几个库,每个库多少个表,推荐是32库 * 32表,对于大部分公司来说,可能几年都够了,即使不够,我们也可以让DBA对历史数据进行归档存储,比如只保留2年内的数据,2年前的数据进行归档存储,这样就可以循环使用了;
  • 2、路由的规则,orderId 模 32 = 库,orderId / 32 模 32 = 表

如图,假设我们申请了4台数据库服务器,每台上面部署了8个数据库,每个数据库对于每张表分了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亿的数据,后面申请服务器资源的话也只是对并发数量进行扩容,而不是对表存储量扩容。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/12/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.扩充数据库服务器法:
  • 总结:
相关产品与服务
归档存储
腾讯云 COS 归档存储(COS Archive Storage)是腾讯云对象存储 COS 低成本、持久可靠的存储类型,为企业和个人开发者提供海量、非结构化数据的长时间备份能力。与本地备份相比,归档存储采用分布式云端存储架构,您无需关注硬件维护及容量扩展,当您需要数据时,可以通过 RESTful API 对存储的数据进行恢复并设置有效期来访问。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档