首页 > 数据库 >MySQL集群架构扩容方案

MySQL集群架构扩容方案

时间:2022-11-17 21:36:20浏览次数:56  
标签:扩容 同步 架构 数据库 集群 MySQL 服务 数据 平滑

一. 扩容场景描述

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

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

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

 

 

 

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

  • 停机扩容
  • 平滑扩容

二. 停机扩容:

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

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

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

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

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

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

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

  • 优点:简单
  • 缺点:
    • 停止服务,缺乏高可用
    • 程序员压力山大,需要在指定时间完成
    • 如果有问题没有及时测试出来启动了服务,运行后发现问题,数据会丢失一部分,难以回滚。
  • 适用场景:
    • 小型网站
    • 大部分游戏
    • 对高可用要求不高的服务

三 平滑扩容


数据库扩容的过程中,如果想要持续对外提供服务,保证服务的可用性,平滑扩容方案是最好的选择。

平滑扩容可以将数据库数量扩容成原来的2倍,比如:由2个数据库扩容到4个数据库,具体步骤如下:

新增2个数据库

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

 

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

 

 

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

 

 

 

 

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

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

User1去除 uid % 4 = 2的数据;
User3去除 uid % 4 = 0的数据;
User2去除 uid % 4 = 3的数据;
User4去除 uid % 4 = 1的数据;


优点:

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

缺点:

  • 程序复杂、配置双主同步、双主双写、检测数据同步等
  • 后期数据库扩容,比如成千上万,代价比较高

适用场景:

  • 大型网站
  • 对高可用要求高的服务

 

标签:扩容,同步,架构,数据库,集群,MySQL,服务,数据,平滑
From: https://www.cnblogs.com/shoshana-kong/p/16901052.html

相关文章

  • 26-mysql高可用-MAH
    MHAMasterHighAvailabilityMHA工作原理和架构MasterHighAvailability,对主节点进行监控,可实现自动故障转移至其它从节点;通过提升某一从节点为新的主节点,基于主从复制实......
  • 一台服务器部署3个mysql实例
    1.数据库的安装过程:略,可以参考我以前的博客2.将安装目录copy2份,本实例的安装目录为:/project/mysql3306,所以复制两份:/project/mysql3307和/project/mysql33083.本文在一......
  • LVS负载均衡集群----NAT部署
    一、企业群集应用概述1.1群集的含义Cluster、集群、群集由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机1.2问题及解决......
  • redis 缓存高可用集群
    redis集群方案比较哨兵模式在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点状态,如果master节点异常,则会做主从切换,将某一台salve作......
  • LNMP架构搭建
       1.Nginx的相关知识 1.1Nginx的简介 1.2 Apache与Nginx的区别1.3 Nginx的进程2.编译安装Nginx服务 2.1.1关闭防火墙,将安装nginx所需软件包传到/op......
  • 129-mysqldump备份与恢复
    编码:(utf8/utf8mb4)mysqldump--host=192.168.60.15--password=wellDone@123--port=3306–-default-character-set=utf8--user=zhgaSqgkSq-Rzhga-sqgk-sq>e:/qz_s......
  • LVS负载均衡集群--DR模式
    一、LVS-DR集群介绍LVS-DR(LinuxVirtualServerDirectorServer)工作模式,是生产环境中最常用的一种工作模式。1、LVS-DR工作原理LVS-DR模式,DirectorServer作为群......
  • MySQL+MGR单主模式集群环境部署
    MySQLGroupReplication(简称MGR)是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案。MGR是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方......
  • LVS负载均衡集群:NAT模式
    一.群集概述1.1什么是群集群集又称为集群,就是将多台主机作为一个整体(相当于一台大型计算机),对外提供服务并且只提供一个对内访问的入口。1.2为什么要创建集群问题:在互......
  • LVS负载均衡集群:DR模式
    一.LVS-DR模式DirectRouting,简称DR模式采用半开放式的网络结构,与YUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络负载调度器与各节点服务器通......