低读低写并发、低数据量方案

方案一:双机高可用方案

1.数据库架构图

2.特点

一台机器A作为读写库,另一台B作为备份库;A库故障后B库作为读写库;A库恢复后A作为备库。

3.开发说明

此种情况下,数据源配置中的数据库IP地址,可采用虚拟的IP地址。虚拟IP地址由两台数据库机器上的keepalive配置,并互相检测心跳。当其中一台故障后,虚拟IP地址会自动漂移到另外一台正常的库上。

数据库的主备配置、故障排除和数据补全,需要DBA和运维人员来维护。而程序代码或配置并不需要修改。

具体配置可参考资料:

4.适应场景

读和写都不高的场景(单表数据低于500万),双机高可用。

5.优缺点

优点是一个机器故障了可以自动切换;缺点是只有一个库在工作,读写并未分离,并发有限制。

方案二:主从结构方案

1.数据库架构图

2.特点

一台机器A作为写库,另一台B作为读库;A库故障后B库充当读写,A修复后,B库为写库,A库为读库。

3.开发说明

这种方案的实现,要借助数据库中间件Mycat来实现,Mycat的datahost配置如下(注意balance和writetype的设置)

select user()

项目开发中,要配置Mycat数据源,并实现对Mycat数据源的数据操作。数据库A和数据库B应该互为主从。数据库的主主配置、故障排除和数据补全,依然需要DBA和运维人员来维护。

4.适应场景

读和写都不是非常高的场景(单表数据低于1000万),高可用。比方案一并发要高很多。

5.优缺点

优点是一个机器故障了可以自动切换;读写分离,并发有了很大的提升。缺点是引入了一个Mycat节点,若要高可用需要引入至少两个Mycat。常规的解决方案是引入haproxy和keepalive对mycat做集群。

高读低写并发、低数据量方案

方案三:一主多从+读写分离

1.数据库架构图

2.特点

一个主写库A多个从库,当主库A故障时,提升从库B为主写库,同时修改C、D库为B的从库。A故障修复后,作为B的从库。

3.开发说明

项目开发中需要使用Mycat作为中间件,来配置主库和从库,核心配置如下:

select user()

主库A故障后,Mycat会自动把从B提升为写库。而C、D从库,则可以通过MHA等工具,自动修改其主库为B。进而实现自动切换的目地。

MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。

MHA相关知识请参考:

4.适应场景

该架构适合写并发不大、但是读并发大的很的场景

5.优缺点

由于配置了多个读节点,读并发的能力有了质的提高。理论上来说,读节点可以多个,可以负载很高级别的读并发。当然,Mycat依然需要设计高可用方案。

高读写并发、低数据量方案

方案四:****MariaDB Galera Cluster方案

1.数据库架构图

2.特点

多个数据库,在负载均衡作用下,可同时进行写入和读取操作;各个库之间以Galera Replication的方法进行数据同步,即每个库理论上来说,数据是完全一致的。

3.开发说明

数据库读写时,只需要修改数据库读写IP为keepalive的虚拟节点即可;数据库配置方面相对比较复杂,需要引入haproxy、keepalive、Galaera等各种插件和配置。

4.适用场景

该方案适合读写并发较大、数据量不是非常大的场景。

5.优缺点点

优点:1)可以在任意节点上进行读2)自动剔除故障节点3)自动加入新节点4)真正并行的复制,基于行级5)客户端连接跟操作单数据库的体验一致。6) 同步复制,因此具有较高的性能和可靠性。

缺点:1) DELETE操作不支持没有主键的表,没有主键的表在不同的节点顺序将不同2)处理事务时,会运行一个协调认证程序来保证事务的全局一致性,若该事务长时间运行,就会锁死节点中所有的相关表,导致插入卡住(这种情况和单表插入是一样的)。2)整个集群的写入吞吐量是由最弱的节点限制,如果有一个节点变得缓慢,那么整个集群将是缓慢的。为了稳定的高性能要求,所有的节点应使用统一的硬件。3)如果DDL语句有问题将破坏集群,建议禁用。4) Mysql数据库5.7.6及之后的版本才支持此种方案。

高读写并发、高数据量方案

方案五 数据库中间件

1. 数据库架构图

2.特点

采用Mycat进行分片存储,可以解决写负载均衡和数据量过大问题;每个分片配置多个读从库,可以减少单个库的读压力。

3.开发说明

此种情况,需要配置Haproxy、keepalive和mycat集群,每个分片上又需要配置一主多从的集群。每个分片上的完整配置,具体请参考方案三,可以简单地把方案三理解为一个分片结构。因此,配置和维护量都比较大。

4.适用场景

读写并发都很大并且数据量非常大的场景。

5.优缺点

优点:终极的解决高并发高数据量的方法。

缺点:配置和维护都比较麻烦,需要的软硬件设备资源大。

方案 mysql 优点_mysql高可用方案分析相关推荐

  1. MySQL数据库的高可用方案总结

    高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法 ...

  2. mysql查询每个机构下的账号总数_MySQL高可用方案:实践篇

    今天我们就来搭建一个读写分离,负载均衡的MySQL集群.想了解高可用理论方面内容的童鞋可以阅读理论篇. 奥兹·杰克:MySQL高可用方案:理论篇​zhuanlan.zhihu.com 搭建的集群的基本 ...

  3. mysql 双主 脑裂_MySQL高可用方案——双主

    MySQL高可用方案--双主 发布时间:2020-03-01 20:45:48 来源:51CTO 阅读:253 作者:warrent MySQL的高可用方案有很多种,双主.MHA.MMM等等,这里只是 ...

  4. mysql高可用_mysql高可用方案

    第一节:mysql 高可用方案 1.1 一主一从架构 mysql 配置为主从模式,从库是主库的 backup,同一时间设置其中一台为主服务器,提供读写,另一台服务器作为热备,不提供读写,通过复制与主服 ...

  5. mysql mha好吗_MySQL高可用方案MHA的一些总结和思考

    原标题:MySQL高可用方案MHA的一些总结和思考 MySQL高可用方案中MHA绝地是一个相当成熟的实现.对于数据的切换,其实MGR也能很好的完成,也就是说,数据层面的角色切换已经刻意很平滑的做好了, ...

  6. mysql 升级高可用_MySQL高可用方案升级规划

    这是学习笔记的第2035篇文章 这两天在梳理MySQL高可用方案的升级计划,发现要做的事情还真不少. 我们目前有新系统和老系统,老系统因为历史原因使用的是MySQL 5.5版本,新系统有了整体的规划, ...

  7. mysql跨机房高可用方案_10款常见MySQL高可用方案选型解读

    作者介绍 王松磊,现任职于UCloud,从事MySQL数据库内核研发工作.主要负责UCloud云数据库udb的内核故障排查工作以及数据库新特性的研发工作. 一.概述 我们在考虑MySQL数据库的高可用 ...

  8. MySQL高性能和高可用方案

    MySQL可以实现复杂的查询,但存储容量相对较少,只能通过合理设计来存储海量数据,来提升其性能. 高性能方案 1. 主从同步 主从同步依赖于良好的网络环境(物理备份必不可少). 2. 读写分离 写在主 ...

  9. mysql mmm 扩展_Mysql - 高可用方案之MMM(一)

    一.概述 本文将介绍mysql的MMM(Master-Master replication manager for MySQL)方案.官方文档地址:https://mysql-mmm.org/star ...

最新文章

  1. 为什么一定要前后端分离?
  2. 多尺度人脸检测--Face Detection through Scale-Friendly Deep Convolutional Networks
  3. zabbix监控交换机出图断断续续
  4. linux系统下创建symlink(@)即文件软链接(快捷方式)的命令
  5. Leetcode70场双周赛-第一题2144. 打折购买糖果的最小开销
  6. 非看不可!飞猪技术专家教你在家高效办公!
  7. SessionState详解
  8. LintCode 207. 区间求和 II(线段树)
  9. 常用前端代码资源(转)
  10. python的编程软件有哪些_python编程工具有哪些
  11. Redis系列四 Redis常见配置
  12. 对话Ruby创始人松本行弘、阿里高级技术专家朴灵!
  13. 截止2021年7月中国有多少大学生?
  14. CSDN刷访问量专用博客
  15. 编程需要那些数学和计算机知识点,学习编程需要哪些基础?
  16. H5及微信小程序实测可用——监听手机返回键操作
  17. 为你的程序创建一个控制台
  18. python-字符串连接
  19. Mybatis-Plus如何使用分页
  20. mysql 1100_错误代码:1100 Table 't_depart_info' was not locked with LOCK TABLES的解决方法

热门文章

  1. Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)解决方法
  2. C#从服务器下载文件到客户端源码
  3. 使用Maven构建Dubbo服务的可运行jar包
  4. Lisp 的单行注释和多行注释
  5. 在各路由器进行OSPF的基本配置
  6. webpack-dev-server 和webpack-hot-middleware
  7. Xcode生成的可执行文件在哪里
  8. Linux 学习笔记_10_Shell编程_2_Shell编程语法(三)
  9. 高手整理培训笔记(服务篇)
  10. 最后关于nginx+passenger+ror+mysql的安装部署过程