目前公司有需求做MySQL高可用读写分离,网上搜集了不少方案,都不尽人意,下面是我结合现有组件拼凑的实现方案,亲测已满足要求,希望各位多提建议 :)

一、    网上方案整理(搜集地址不详。。。)

1、MySQL Replication

对于单一的MySQL同步功能,因无法实现IP地址的自动切换,而该表中所列的功能是MySQL Replication的单向同步工作方式,需要改进为双向同步,就可以实现数据的双向同步、重同步、数据库切换的功能。

2、MySQL Replication+Heartbeat

对于第二种方案,引入了heartbeat,所以可以实现IP地址切换,heartbeat只针对主机和网络故障的切换,无法监控数据库故障,所以需要额外的工具和配置,而且MySQL Replication的工作机制为异步通讯方式,对同步的数据的一致性可能产生影响。

3、MySQL+Heartbeat+DRBD

对于第三种采用了DRBD,DRBD是Distributed Replicated Block Device,是基于内核开发的一个虚拟块设备的工具,该软件可以在一个实际块设备或分区上虚拟一个块设备,并挂载到系统之上,两台主机通过配置,来同步块设备上的数据,能够实现双向实时同步的功能,但同时只能有一台主机处于活动状态,从服务器上的虚拟块设备无法挂载,从而不能启动从服务器的MySQL服务,在切换时需要从服务器控制启动顺序,按顺序切换DRBD,挂载虚拟块设备,启动MySQL,调试中该时延较长。而且DRBD基于内核,在应用调试中,多次导致服务器内核出问题而导致主机死机,所以对于服务器的高稳定需求不满足。

4、MySQL Cluster

集群方式一般应用在负载均衡,采用单向同步的方式,对数据的修改只在一台数据库服务器上进行,对于查询则交给其他的数据库服务器,同时无法完成IP地址的自动切换,所以没有调试

5、MySQL+memcached

这种方案采用共享内存的方式,使多个MySQL共享同一内存缓冲区,故不适用备份的目的。

6、MySQL Proxy:

对于IP地址切换的功能,也可以采用MySQL Proxy来实现,其工作原理是在MySQL Server和Client之间添加一个代理设备,通过lua脚本来处理数据请求,可以根据业务需求用lua脚本实现不同的功能,但这种方式将多添加一台MySQL Proxy服务器。

二、推荐方案

采用MySQL Replication+ MySQL Proxy+Heartbeat实现MySQL读写分离HA

1、双Master都安装MySQL Proxy和Heartbeat(也可以单独安装MySQL Proxy,Heartbeat跟MySQL Proxy必须装在一起,MySQL Proxy的代理IP使用Heartbeat浮动IP);

2、多个Slave跟Heartbeat主MasterA进行一主多从模式的数据同步,如果MasterA突然挂掉,Heartbeat自动切换到MasterB,所有的从也会切换到MasterB上(通过Heartbeat的haresources配置实现);

3、Application通过Heartbeat浮动IP访问数据库。

三、测试

为测试方便修改rw-splitting.lua中 min_idle_connections和max_idle_connections的值为1,开启两个以上客户端连接mysql-proxy(这里的ip地址是Heartbeat浮动IP)

mysql -h172.**.**.** –P4040 -uroot –pcoship

use 测试数据库

1、先插入部分数据,再登陆主从多服务器的MySQL查看数据是否同步;

2、然后在从服务执行stop slave;在插入数据(目的是不然数据同步到从服务),再执行查询操作,查看是否是在从上面查询;

3、直接关闭MasterA服务器,看MySQL是否可以继续使用;

目前上面方案已经实现并已写成自动化安装,具体安装配置有需要的同学可以评论回复;

转载于:https://www.cnblogs.com/huige-you/p/4061846.html

MySQL高可用读写分离方案预研相关推荐

  1. MySQL高可用集群方案优劣对比

    转载自: https://www.cnblogs.com/wuxu/p/13161438.html 集群的好处: (1)高可用性:故障检测及迁移,多节点备份: (2)可伸缩性:新增数据库节点便利,方便 ...

  2. Amoeba-mysql开源项目高可用读写分离

    Amoeba为阿里的工程师的开源项目,实现高并发集群读写分离而开发的 转载请原创作者:QQ:87180023 前提:master和slave已经做好了主从复制 下载: jdk-6u3-linux-i5 ...

  3. 8-18 高可用读写分离

    读写分离,在redis从节点下线的时候,无法完成client的感知到新的redis slave节点. client无法知道从节点挂掉,访问新的slave节点读/写操作. 看一下jdeisSentine ...

  4. mysql cluster 读写分离_mysql数据库集群实现高可用读写分离_一点课堂(多岸学院)...

    环境信息 操作系统:centos6.8 #mysql版本 mysql-community-client-5.7.25-1.el6.x86_64.rpm mysql-community-server-5 ...

  5. MySQL高可用MHA架构方案

    一.完整的MHA的架构方案 二.MHA故障发现与转移过程 MHA在启动的时候会有前置检查 MHA会每3s向主节点发送一个select 1 的sql语句,看主节点能不能执行成功,并且把1返回,如果能正常 ...

  6. MySQL高可用与读写分离

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 MySQL高可用主从分离构建 架构模式 搭建准备 主从分离 原理 配置 检验效果 注意事项 历史数据同步 架构模式 一主一从: 一主多 ...

  7. Maxscale Keepalived MySQL实现高可用读写分离集群

    图片是模拟两个从节点down是否正常提供服务 访问http://ip:8989端口,登录名admin,密码mariadb 环境说明: IP地址 数据库服务 读写分离代理服务 负载均衡服务 虚拟IP 1 ...

  8. c++获取可用端口号_PG高可用架构实施方案

    1.PG概述 PostgreSQL是一个功能非常强大的.源代码开放的客户/服务器关系型数据库管理系统(RDBMS).PostgreSQL最初设想于1986年,当时被叫做Berkley Postgres ...

  9. MySQL高可用和灾备调研

    1.高可用和灾备方案概览 高可用方案的评价以组件能正常对外提供服务为主,而灾备方案的评价以数据稳定同步和恢复时间尽量短为主,其他的还要求方案实现起来较简单,后期运维服务压力较小等. 当下业界比较流行的 ...

最新文章

  1. 存储过程--分页与C#代码调用
  2. Spider_douyin
  3. c语言实现--不带头结点的单链表操作
  4. Leaflet中自定义marker的icon图标
  5. Json-转自菜鸟教程
  6. linux tcp header更改,Linux Netfilter中修改TCP/UDP Payload的方法
  7. 漫话:为什么计算机用补码存储数据?
  8. 串口循环缓存区 简单 免初始化 不用堆、指针、分段memcpy
  9. dataframe 查找特定值_C++初级编程NOIP题:11H1544: 查找特定的值
  10. vscode设置字体颜色
  11. OpenDDS环境搭建-Windows 10
  12. 三因素三水平正交表l9_正交试验在减水剂中的应用
  13. 2015-2018节假日表
  14. SAP 生产订单创建修改日期
  15. 用生成对抗网络给雪人上色,探索人工智能时代的美学
  16. 截取音乐片段的计算机软件,电脑上剪辑音乐的软件
  17. 计算机网络协会宣传文案,心理协会 | 一千句招新文案,不及你出现的一刻
  18. 微星 b460m 10400f 黑苹果 (mac os11) rx570 (B460M-A PRO) efi
  19. 小红书携手HMS Core,畅玩高清视界,种草美好生活
  20. OSChina 周二乱弹 ——程序员吹完牛逼 都自己加班去了

热门文章

  1. python股票量化交易(12)---使用pyqt5构建股票交易软件主页
  2. py - 多线程 -threading模块
  3. rnss和rdss的应用_科学网—北斗RNSS和RDSS - 陈超的博文
  4. 彩色图像--色彩空间 总结
  5. 大一下c语言期末考试编程题,大一上期末C语言编程题
  6. 国产物联网技术ZETA正为工业数字化转型提供底层基础设施
  7. 别小看“Spring过滤器”,这些知识点你必须得掌握
  8. 市场调研-全球与中国重型汽车发动机活塞市场现状及未来发展趋势
  9. 设置开机软件启动的方法
  10. you can attach the source by clicking attach source below