当系统用户进入了高速增长期时,即便是对数据进行分库分表,但数据库的容量,还有表的数据量也总会达到天花板。当现有数据库达到承受极限时,就需要增加新服务器节点数量进行横向扩容。

首先来思考一下,横向扩展会有什么技术难度?

数据迁移问题

分片规则改变

数据同步、时间点、数据一致性

遇到上述问题时,我们可以使用以下两种方案:

1、停机扩容

这是一种很多人初期都会使用的方案,尤其是初期只有几台数据库的时候。停机扩容的具体步骤如下:

1)站点发布一个公告,例如:“为了为广大用户提供更好的服务,本站点将在今晚00:00-2:00之间升级,给您带来不便抱歉";

2)时间到了,停止所有对外服务;

3)新增n个数据库,然后写一个数据迁移程序,将原有x个库的数据导入到最新的y个库中。比如分片规则由%x变为%y;

4)数据迁移完成,修改数据库服务配置,原来x个库的配置升级为y个库的配置

5)重启服务,连接新库重新对外提供服务

6)回滚方案:万一数据迁移失败,需要将配置和数据回滚,改天再挂公告。

优点:简单

缺点:

1)停止服务,缺乏高可用

2)程序员压力山大,需要在指定时间完成

3)如果有问题没有及时测试出来启动了服务,运行后发现问题,数据会丢失一部分,难以回滚。

适用场景:

小型网站

大部分游戏

对高可用要求不高的服务

2、平滑扩容

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

新增2个数据库

配置双主进行数据同步(先测试、后上线)

数据同步完成之后,配置双主双写(同步因为有延迟,如果时时刻刻都有写和更新操作,会存在不准确问题)

数据同步完成后,删除双主同步,修改数据库配置,并重启;

此时已经扩容完成,但此时的数据并没有减少,新增的数据库跟旧的数据库一样多的数据,此时还需要写一个程序,清空数据库中多余的数据,如:

User1去除 uid % 4 = 2的数据;

User3去除 uid % 4 = 0的数据;

User2去除 uid % 4 = 3的数据;

User4去除 uid % 4 = 1的数据;

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

优点:

扩容期间,服务正常进行,保证高可用

相对停机扩容,时间长,项目组压力没那么大,出错率低

扩容期间遇到问题,随时解决,不怕影响线上服务

可以将每个数据库数据量减少一半

缺点:

程序复杂、配置双主同步、双主双写、检测数据同步等

后期数据库扩容,比如成千上万,代价比较高

适用场景:

大型网站

对高可用要求高的服务

相关文章推荐:

mysql扩容方案_MySQL分库分表:扩容方案相关推荐

  1. 玩转MySQL:一站式解决分库分表后患问题方案

    引言 上篇有关分分库分表一文中已经将分库分表的方法论全面阐述清楚了,总体看下来用一个字形容,那就是爽!(手动狗头)尤其是分库分表技术能够让数据存储层真正成为三高架构,但前面爽是爽了,接着一起来看看分库 ...

  2. MySQL数据库怎么进行分库分表?

    ▲ 点击上方"分布式实验室"关注公众号 回复"1"抽取纸质技术书 提起分库分表,对于大部分服务器开发来说,其实并不是一个新鲜的名词.随着业务的发展,我们表中的数 ...

  3. MySQL使用Mycat实现分库分表-读写分离

    MySQL使用Mycat实现分库分表-读写分离 Mycat Mycat介绍 什么是Mycat? Mycat架构 Mycat核心概念 MyCat主要解决的问题 MyCat对多数据库的支持 Mycat分片 ...

  4. Mysql系列七:分库分表技术难题之分布式全局唯一id解决方案

    Mysql系列七:分库分表技术难题之分布式全局唯一id解决方案 参考文章: (1)Mysql系列七:分库分表技术难题之分布式全局唯一id解决方案 (2)https://www.cnblogs.com/ ...

  5. mysql多字段分库分表基因码_mysql数据库优化方案之分库分表,轻松解决亿级数据问题...

    今天介绍下sharding-sphere,主要介绍他的特性,分库分表的技术的详解. (一)下载源码官网地址获取源码https://shardingsphere.apache.org/index_zh. ...

  6. mysql分片库分页查询_Mysql分库分表

    一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数据库连接少甚至无连接可用.接下来就 ...

  7. 256 变 4096:分库分表扩容如何实现平滑数据迁移?

    作者 | 亮言 背景 2020年,笔者负责的一个高德打车弹外订单系统进行了一次扩分库分表和数据库迁移.该订单系统整体部署在阿里云上,服务使用ECS部署.数据库采用RDS.配置中心基于阿里云ACM自研. ...

  8. MySQL数据库之常用分库分表方案实例分析

    一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数据库连接少甚至无连接可用.接下来就 ...

  9. MySQL:互联网公司常用分库分表方案汇总!

    本文来源: cnblogs.com/littlecharacter/p/9342129.html 一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数 ...

  10. MySQL分库分页_MySQL分库分表的分页查询解决方案

    问题的提出 我们知道,当我们的数据量达到一定数量时,需要将数据表进行水平拆分,从而满足大量数据的存储和查询,保证系统的可用性,但同时会出现另外一个问题就是,如果业务要查询"最近注册的第3页用 ...

最新文章

  1. QT学习第8课:QT计算器界面实现
  2. Oracle ADG vs DG
  3. flutter - 如何在Dart/Flutter中将某些元素从一个Map复制到新Map中?
  4. JZOJ 5197. 【NOIP2017提高组模拟7.3】C
  5. ES6减少魔法操作之Reflect
  6. Matplotlib 中文用户指南 3.9 路径效果指南
  7. [转载] python中getpass模块
  8. doc命令操作数据库(下)
  9. 工作小记20201017-hive或inceptor相关
  10. linux日期时间转换函数,Linux时间戳、日期转换函数
  11. 审计机构不用计算机审计,计算机审计存在哪些风险
  12. 免费开源网站系统有哪些
  13. php wordpress 代码模板,wordpress模板代码详解
  14. 一个屌丝程序猿的人生(五十一)
  15. 爬虫学习笔记,从基础到部署。
  16. 全网最新最全的 HDFS 文件纠删码技术分析
  17. 【Ybt OJ】[数学基础 第3章] 同余问题
  18. 新一代安防的寄托——大数据应用初成气候
  19. 香橙派OrangePi Zero2开发板外接USB无线网卡测试示例
  20. 雅思备考笔记—小作文篇(柱状图)

热门文章

  1. 平面坐标转大地坐标(经纬度)
  2. 一文看懂P2P原理及UDP穿透
  3. 《Nature》论文插图的Matlab复刻第4期—单组多色柱状图(Part2-82)
  4. 基于STM32的简易交通灯设计
  5. MacOS升级Big Sur后32位锐捷客户端排坑历程
  6. 100G QSFP28 AOC有源光缆的分类及应用
  7. 人人网主页登录_人人网回归了!原来的账号还能登录,你的“黑历史”都在呢...
  8. centos7服务器如何通过trunk模式接入交换机
  9. 牛顿与莱布尔茨的微积分战争
  10. Win10任务栏卡死,无响应,点不动解决方法集锦