mysql负载均衡方案

一、直接连接

数据库的读写分离方案很多,这里介绍基于mysql数据库的读写分离方案。
比较常见的读写分离方案如下:
1 基于查询分离
最简单的分离方法是将读和写分发到主和从服务器上,这种策略很容易实现,但是仅限于一些能够容忍查询脏数据的操作。
举个例子来说,用户写入了一条评论,发往主库保存,查询的时候则是从从库拉取数据,由于主从数据库存在复制延迟,用户很可能看不到自己的最新评论,这就是脏数据。

2 基于脏数据分离
这种策略是基于查询分离方法的改进。需要做一些额外的工作,让应用检查复制延迟,以确定备库数据是否太旧。许多报表类应用都使用这个策略:只需要晚上加载的数据复制到备库即可,他们并不关心从库是不是100%跟上了主库。

3 基于会话分离
另一个决定能否从从库读取数据的稍微复杂一点的方法是判断用户自己是否修改了数据。用户不需要看到其他用户的最新数据,但需要看到自己的更新。可以再会话层设置一个标记位,表明做了更新,就将该用户的查询在一段时间内总是指向主库。这是推荐的一种做法,因为他是在简单和有效性之间的一种很好的妥协。
我们还可以把基于会话的分离方法和复制延迟监控结合起来,如果用户在10秒前更新了数据,而所有备库延迟在5秒内,就可以安全的从备库中读取数据,但为整个会话选择同一个备库是很好的主意,否则用户可能会奇怪有些备库的数据比较慢。

4 基于版本分离
这种策略与基于会话的分离方法相似,你可以跟踪对象的版本号或者时间戳,通过从备库读取对象的版本或时间戳来判断数据是否足够新。如果备库的数据太旧,可以从主库获取最新的数据。

5 基于全局版本/会话分离
这个办法是基于版本分离和会话分离的变种.当应用执行写操作时,在提交事务后,执行一次show master status操作。然后在缓存中存储主库日志坐标,作为被修改对象以及/或者会话的版本号。的那个应用连接到备库时,执行show slave status 并将备库上的坐标和缓存中的版本号对比,如果备库相比记录点更新,则可以安全的读取备库数据。

修改DNS域名

转移IP地址

一些负载均衡方案依赖于在服务器间转移虚拟地址,一般能够很好地工作。

可以通过ARP(地址解析协议)命令强制使IP地址更改快速而且原子性地通知到网络上。

二、引入中间件

HaProxy,mycat

mysql负载均衡方案的更多相关文章

  1. MySQL数据库读写分离、读负载均衡方案选择

    MySQL数据库读写分离.读负载均衡方案选择 一.MySQL Cluster外键所关联的记录在别的分片节点中性能很差对需要进行分片的表需要修改引擎Innodb为NDB因此MySQL Cluster不适 ...

  2. 大数据时代下的SQL Server第三方负载均衡方案----Moebius测试

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 架构原理(Architecture) 测试环境(Environment) 安装Moebius( ...

  3. Openfire 集群部署和负载均衡方案

    Openfire 集群部署和负载均衡方案 一.   概述 Openfire是在即时通讯中广泛使用的XMPP协议通讯服务器,本方案采用Openfire的Hazelcast插件进行集群部署,采用Hapro ...

  4. (转)大数据时代下的SQL Server第三方负载均衡方案----Moebius测试

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 架构原理(Architecture) 测试环境(Environment) 安装Moebius( ...

  5. 使用LVS+keepalived实现mysql负载均衡的实践和总结

    前言 经过一段时间的积累,数据库的架构就需要根据项目不断的进行变化. 从单台数据库,到了两台数据库的主从,再到读写分离,再到双主,现在进一步需要更多的数据库服务器去支撑更加可怕的访问量. 那么经过那么 ...

  6. 这么多TiDB负载均衡方案总有一款适合你

    [是否原创]是 [首发渠道]TiDB 社区 前言 分布式关系型数据库TiDB是一种计算和存储分离的架构,每一层都可以独立地进行水平扩展,这样就可以做到有的放矢,对症下药. 从TiDB整体架构图可以看到 ...

  7. Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)

    概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...

  8. asp.net负载均衡方案[转]

    在前面的几篇文章中,主要谈到了在Discuz!NT中的跨站缓存数据,数据库负载均衡.但如果要实现将产品分布式布置到若干机器,组成集群来共同支撑起整个业务的话,还是有一定问题的(后面会有所介绍).下面先 ...

  9. (转)简易WCF负载均衡方案

    最近跟高老师讨论nginx跟tomcat集群做负载均衡方案.感觉很有意思.想到自己项目中服务用的WCF技术,于是就想WCF如何做负载均衡,Google了一会,发现wcf4.0的路由服务好像可以实现.不 ...

随机推荐

  1. LucaCanali--SystemTap_Linux_IO

    https://github.com/LucaCanali/Linux_tracing_scripts/tree/master/SystemTap_Linux_IO

  2. “ORA-01747: user.table.column, table.column 或列说明无效” 的解决方案

    此问题的原因是因为表的列名称使用了Oracle声明的关键字,列名起的不好引起的. 如果列很多,又不好确定是哪个列名使用了关键字,以下建议可供参考: select * from v$reserved_w ...

  3. ffmpeg实时编码解码部分代码

    程序分为编码端和解码端,两端通过tcp  socket通信,编码端一边编码一边将编码后的数据发送给解码端.解码端一边接收数据一边将解码得到的帧显示出来. 代码中的编码端编码的是实时屏幕截图. 代码调用 ...

  4. 【J2EE】十三个规范:愿天下苍生,人人如猿。

    学习了J2ee后对java这个立足标准化的行为感到深深的佩服. 收买什么都不如收买人心,培养啥子都不如培养 习惯.没错,java就是在培养行业习惯,以一纸规范屹立不倒.毕竟技术什么的层出不穷,再新再前 ...

  5. 我理解的ios和android

    近期着手了几个android和ios的项目,如今说下我的几个对他们的理解 从设计上来讲.我觉得android 它更像是个网页,一个页面跳到另外一个页面,两者之间的关联不是非常大,仅仅能传递一些简单的參 ...

  6. weex 阶段总结

    新年伊始,回顾过去的一年,收获很多,之前一直在研究weex,说心里话感觉心好累,官方文档不全,社区不活跃,遇到很多坑,官方发布的版本有时都有坑,搞得我都不敢更新版本了. 但是,研究了这么久,放弃太可惜 ...

  7. insertion-sort-list——链表、插入排序、链表插入

    Sort a linked list using insertion sort. PS:需要考虑left为head且只有一个数时,此时left->==NULL,若right<left则应更 ...

  8. java开始到熟悉100-102

    本次内容:arraylist() 1. package list; import java.util.ArrayList; import java.util.Date; import java.uti ...

  9. crm操作约会实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages;     using Microsoft ...

  10. 数据结构与算法之贪心算法 C++实现

    1.基本思路:从问题的某一个初始解触发逐步逼近给定的目标,以尽可能快的求得更好的解. 当达到算法中某一步不能再继续前进时.就停止算法,给出近似值.也就是说贪心算法并不从总体最优考虑,它所作出的选择仅仅 ...