Mysql数据库平滑扩容解决高并发和大数据量问题 1

本文涉及的产品
RDS AI 助手,专业版
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDSClaw,2核4GB
简介: Mysql数据库平滑扩容解决高并发和大数据量问题

1 停机方案

  1. 发布公告
  2. 停止服务
  3. 离线数据迁移(拆分,重新分配数据)
  4. 数据校验
  5. 更改配置
  6. 恢复服务
  7. 回滚预案

2 停写方案

  1. 支持读写分离
  2. 升级公告
  3. 中断写操作,隔离写数据源(或拦截返回统一提示)
  4. 数据同步处理
  5. 数据校验
  6. 更改配置
  7. 恢复写操作
  8. 数据清理
  9. 回滚预案

3 平滑扩容之双写方案(中小型数据)

双写方案可通过canal或mq做实现。

  1. 增加新库
  2. 数据迁移:避免增量影响, 先断开主从,再导入(耗时较长), 同步完成并做校验
  3. 增量同步:监听Canal,并开启主从同步
  4. 切换新库
  1. 修复切换异常数据(canal未同步但已切换至新库的请求), 通过定制程序读取异常日志做处理

为什么不通过MariaDB Galera集群直接扩充新的服务器节点去实现扩容?

  1. Galera集群是多主同步,扩充的节点提升的是并发吞吐能力,数据瓶颈问题未解决。
    通过路由中间件MyCat,Sharding JDBC等, 直接扩充新的节点是否可性?
  2. 原数据需要重新分配, 比如取模分片。

总结:

这种方案就是水平扩容,提高了并发量,但是实际大数据量的瓶颈没有解决.

4 平滑扩容之2N方案大数据量问题解决

4.1 扩容问题

项目初期,部署了数据库A及其从机A0,B及其从节点B0,为将数据平均分配,在service层,使用uid%2取模分片(可采用sharding JDBC),将数据分配到对应的数据库。如下图

随着用户量的增大,用户产生的数据量最终达到数据库的最佳存储容量,需要进行扩容,否则CRUD操作会变慢,影响服务的响应速度。

如何平滑的扩容,保证业务的连续性和高可用,对业务影响最小?

4.2 解决方案

  1. 先把A0和B0升级为新的主库节点,如此,由2个分库变为4个分库。同时在上层的分片配置,做好映射,规则如下:
  • uid%4=0的和uid%4=2的数据分别分配到A和A0主库中
  • uid%4=1的和uid%4=3的数据分别分配到B和B0主库中

  1. 由于A和A0库的数据相同,B和B0库的数据相同,此时无需数据迁移,只需调整分片配置即可,可通过配置中心更新,不需要重启。

3. 扩容之后旧数据有冗余,需要对冗余数据做清理

-- 针对A,去除%4!=0的
delete from user.userinfo where uid % 4 != 0;
-- 针对A0,去除%4!=2的
delete from user.userinfo where uid % 4 != 2;
-- 针对B,去除%4!=1的
delete from user.userinfo where uid % 4 != 1;
-- 针对B0,去除%4!=3的
delete from user.userinfo where uid % 4 != 3;
  1. 处理完成后,为保证数据高可用,需要再次为现有主库增加一个从库

以下为双主架构进行水平扩容,下图为现在的架构

4.3 双主架构思想

1.两台mysql都可读写,互为主备,默认只使用一台(masterA)负责数据的写入,另一台(masterB)备用;


2.masterA是masterB的主库,masterB又是masterA的主库,它们互为主从;


3.两台主库之间做高可用,可以采用keepalived等方案(使用VIP对外提供服务);


4.所有提供服务的从服务器与masterB进行主从同步(双主多从);


5.建议采用高可用策略的时候,masterA或masterB均不因宕机恢复后而抢占VIP(非抢占模式);


这样做可以在一定程度上保证主库的高可用,在一台主库down掉之后,可以在极短的时间内切换到另一台主库上(尽可能减少主库宕机对业务造成的影响),减少了主从同步给线上主库带来的压力;


但是也有几个不足的地方:


1.masterB可能会一直处于空闲状态(可以用它当从库,负责部分查询);


2.主库后面提供服务的从库要等masterB先同步完了数据后才能去masterB上去同步数据,这样可能会造成一定程度的同步延时;


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
存储 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL 数据库课程设计:开启数据宇宙的传奇之旅
本文全面剖析数据库课程设计 MySQL,展现其奇幻魅力与严峻挑战。通过实际案例凸显数据库设计重要性,详述数据安全要点及学习目标。深入阐述备份与恢复方法,并分享优秀实践项目案例。为开发者提供 MySQL 数据库课程设计的全面指南,助力提升数据库设计与管理能力,保障数据安全稳定。
大数据新视界--大数据大厂之MySQL 数据库课程设计:开启数据宇宙的传奇之旅
|
11月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
6月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
767 6
|
9月前
|
缓存 关系型数据库 MySQL
在MySQL中处理高并发和负载峰值的关键技术与策略
采用上述策略和技术时,每个环节都要进行细致的规划和测试,确保数据库系统既能满足高并发的要求,又要保持足够的灵活性来应对各种突发的流量峰值。实施时,合理评估和测试改动对系统性能的影响,避免单一措施可能引起的连锁反应。持续的系统监控和分析将对维护系统稳定性和进行未来规划提供重要信息。
420 15
|
10月前
|
关系型数据库 MySQL 分布式数据库
Super MySQL|揭秘PolarDB全异步执行架构,高并发场景性能利器
阿里云瑶池旗下的云原生数据库PolarDB MySQL版设计了基于协程的全异步执行架构,实现鉴权、事务提交、锁等待等核心逻辑的异步化执行,这是业界首个真正意义上实现全异步执行架构的MySQL数据库产品,显著提升了PolarDB MySQL的高并发处理能力,其中通用写入性能提升超过70%,长尾延迟降低60%以上。
|
11月前
|
存储 关系型数据库 MySQL
大数据新视界 --面向数据分析师的大数据大厂之 MySQL 基础秘籍:轻松创建数据库与表,踏入大数据殿堂
本文详细介绍了在 MySQL 中创建数据库和表的方法。包括安装 MySQL、用命令行和图形化工具创建数据库、选择数据库、创建表(含数据类型介绍与选择建议、案例分析、最佳实践与注意事项)以及查看数据库和表的内容。文章专业、严谨且具可操作性,对数据管理有实际帮助。
大数据新视界 --面向数据分析师的大数据大厂之 MySQL 基础秘籍:轻松创建数据库与表,踏入大数据殿堂
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
202 3
|
关系型数据库 MySQL 数据安全/隐私保护
大数据新视界--大数据大厂之MySQL 数据库课程设计:数据安全深度剖析与未来展望
本文深入探讨数据库课程设计 MySQL 的数据安全。以医疗、电商、企业案例,详述用户管理、数据加密、备份恢复及网络安全等措施,结合数据安全技术发展趋势,与《大数据新视界 -- 大数据大厂之 MySQL 数据库课程设计》紧密关联,为 MySQL 数据安全提供全面指南。
大数据新视界--大数据大厂之MySQL 数据库课程设计:数据安全深度剖析与未来展望
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
362 0
|
消息中间件 关系型数据库 MySQL
大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka
大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka
901 0

推荐镜像

更多