简析数据库扩容方案

扩容方案

当系统用户进入了高速增长期时,即便是对数据进行分库分表,但数据库的容量,还有表的数据量也总
会达到天花板。当现有数据库达到承受极限时,就需要增加新服务器节点数量进行横向扩容。
首先来思考一下,横向扩展会有什么技术难度?
在这里插入图片描述

  • 数据迁移问题
  • 分片规则改变
  • 数据同步、时间点、数据一致性

提供以下两种方案参考:

停机扩容

这是一种很多人初期都会使用的方案,在数据库较少时,业务较为简单时使用,大致步骤:

  • 停止对外服务。
  • 新增N哥数据库,写数据迁移程序,将原有的X个库数据导入最新的Y个库中。(比如更改分片规则)
  • 数据迁移完成,修改数据库服务配置,原来x个库的配置升级为y个库的配置。
  • 重启服务,连接新库重新对外提供服务。

优点:

  1. 简单,停机操作风险较低

缺点:

  1. 停止服务,缺乏高可用
  2. 如果有问题没有及时测试出来启动了服务,运行后发现问题,还需要继续刷数据,如果涉及数据量较大则较难修复。

平滑扩容

数据库扩容的过程中,如果想要持续对外提供服务,保证服务的可用性,平滑扩容方案是最好的选择。
平滑扩容就是将数据库数量扩容成原来的2倍,比如:由2个数据库扩容到4个数据库,具体步骤如下:

  • 新增2个数据库
  • 配置双主进行数据同步
    在这里插入图片描述
  • 数据同步完成之后,配置双主双写(同步因为有延迟,如果时时刻刻都有写和更新操作,会存在不
    准确问题)
    在这里插入图片描述
  • 数据同步完成后,删除双主同步,修改数据库配置,并重启;
    在这里插入图片描述
  • 此时已经扩容完成,但此时的数据并没有减少,新增的数据库跟旧的数据库一样多的数据,此时还
    需要写一个程序,清空数据库中多余的数据,如:
    User1去除 uid % 4 = 2的数据;
    User3去除 uid % 4 = 0的数据;
    User2去除 uid % 4 = 3的数据;
    User4去除 uid % 4 = 1的数据;

平滑扩容方案能够实现n库扩2n库的平滑扩容,增加数据库服务能力,降低单库一半的数据量。其核心
原理是:成倍扩容,避免数据迁移。

优点:

  • 扩容期间,服务正常进行,保证高可用
  • 相对停机扩容,时间长,项目组压力没那么大,出错率低
  • 扩容期间遇到问题,随时解决,不怕影响线上服务
  • 可以将每个数据库数据量减少一半

缺点:

  • 程序较为复杂
  • 数据量较大时,代价较高
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值