数据库扩容方案

2 篇文章 0 订阅

历史背景:

业务系统在设计初期,由于数据量小,一般会采取单服务+单数据库

 

随着访问量的上升,需要对数据库做垂直或者水平拆分

如上图通过分片算法我们对数据做了水平拆分,比如订单的库,我们按照订单号对数据表的数量做取于9算法,如订单号为1000,1000/4取余=0,则将数据存入orderdb_1中

随着业务量对上升经过拆分的数据库表的数据里已经达到极限,影响到数据查询等表操作,需要对数据库做扩容操作,扩容方案(扩容一倍)

方案一:

          1:增加新表

           2:修改分片规则,修改写库逻辑、实现新旧库双写,停机发版本

           3:写数据迁移任务,通过前一任务将历史数据迁移至新的表中(按照分片规则)

           4:数据迁移完成,删除就表数据结构(已经迁移到新表中的数据)

          

方案二: 

         分片算法  为原来的 0库增加一个扩容库 00,(原来按照%2=0 的数据会落在0库),落在0库的数据都按照%4会被分成结果为0,和2的数据,结果为0的还是放在原来的0库中,结果为2的数据现在落在00库中,这样一个库能拆分成2个库,通过分片算法也能找到对应的数据

         1:增加新表

         2:将新表找到对应的一张原表(比如0对应到00)

         3:将新表设置成需要拆分表的从表做数据同步(这是方案的核心)

         4:等数据同步成功之后,切换路由算法

         5:待数据稳定之后将各个库中冗余的数据(分片之后不应该落在该库中的数据)删除

方案三:一致性hash算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值