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

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

作者头像
用户7118337
修改2020-04-13 11:06:14
1K0
修改2020-04-13 11:06:14
举报
文章被收录于专栏:ApsaraApsara

面试官:如何来设计动态扩容的分库分表方案? 面试官心理剖析: 这个问题主要是看看你们公司设计的分库分表设计方案怎么样的?你知不知道动态扩容的方案?

回答:

背景说明:如果你们公司之前已经做了分库分表,你们当时分了 4 个库,每个库 4 张表;公司业务发展的很好,现在的数据库已经开始吃力了,不能满足快速发展的业务量了,需要进行扩容。

1)停机扩容

这个方案跟单库迁移方案是一样的,就是停服进行数据迁移,不过现在的数据迁移比之前的单库迁移要复杂的多,还有数据量也是之前的好几倍,单库的数据量可能就几千万,但是现在是 12 个表,那么数据量是几十亿,可能光数据迁移就要花上好几个小时,等你的数据迁移完就已经上凌晨 5 点了,验证完可能都早上 9 点了,这样肯定是不行的,除非第二天你的系统还不能提供服务,那么用户来访问的时候,你们还在升级,这样你们公司就会损失很多钱。

2)双写扩容

这个方案也会变的很复杂,你的数据迁移工具也会写的很复杂。

3)动态扩容方案

比如你直接分 32 个库,每个库分 32 个表; 每个库的每秒写入并发是 2000,单表的数据量为 700 万; 每秒写并发:32 个库2000=64000 数据量:1024 个表7000000=7168000000 如果你觉得你们公司的业务量发展会远远大于这个,那么可以直接扩容到更多的库。

刚开始的时候,你可以使用 4 个机器,每个机器上面建 8 个逻辑数据库;如果 4 个 MySQL 不够用了,那么可以使用 8 个机器,创建 4 个数据库。 这个方案的好处就是,你不需要写数据迁移功能,只需要迁移数据库就可以了,然后代码这边只要修改配置就可以了。这个方案只是做整个数据库的迁移,没有数据的比较,没有临时工具,会方便很多。

如果你们公司不景气了,需要减少机器,那么也很方便,只要把该机器上的数据库迁移到其他机器上就好了,然后修改下我们的代码,改下路由配置就 ok 了。

路由规则: 库:userId 模 32(库数量); 表数据:(userId / 32) 模 32(表数量);

本文系转载,前往查看

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

本文系转载前往查看

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档