mysql 读写分离 事务_mysql 读写分离(基础篇)

mysql 读写分离 事务_mysql 读写分离(基础篇)基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。JanKneschke在《MySQLProxylearnsR/WSplitting》中详细的介绍了这种技巧以及连接池问题:为了实现读写分离我们需要连接池。我们仅在已打开了到一个后端的一条经过认证的连接的情况下,才切换到该后端。MySQL协议首先进行握手。当…

大家好,又见面了,我是你们的朋友全栈君。

基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。

20090413111030727.jpeg

Jan Kneschke在《MySQL Proxy learns R/W Splitting》中详细的介绍了这种技巧以及连接池问题:

为了实现读写分离我们需要连接池。我们仅在已打开了到一个后端的一条经过认证的连接的情况下,才切换到该后端。MySQL协议首先进行握手。当进入到查询/返回结果的阶段再认证新连接就太晚了。我们必须保证拥有足够的打开的连接才能保持运作正常。

实现读写分离的LUA脚本:

— 读写分离

— 发送所有的非事务性Select到一个从数据库

if is_in_transaction == 0 and

packet:byte() == proxy.COM_QUERY and

packet:sub(2, 7) == “SELECT” then

local max_conns = -1

local max_conns_ndx = 0

for i = 1, #proxy.servers do

local s = proxy.servers[i]

— 需要选择一个拥有空闲连接的从数据库

if s.type == proxy.BACKEND_TYPE_RO and

s.idling_connections > 0 then

if max_conns == -1 or

s.connected_clients < max_conns then

max_conns = s.connected_clients

max_conns_ndx = i

end

end

end

— 至此,我们找到了一个拥有空闲连接的从数据库

if max_conns_ndx > 0 then

proxy.connection.backend_ndx = max_conns_ndx

end

else

— 发送到主数据库

end

return proxy.PROXY_SEND_QUERY

注释:此技巧还可以用来实现其他的数据分布策略,例如分片(Sharding)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134635.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 网络基础知识题_基础有哪些类型

    网络基础知识题_基础有哪些类型本文结合多年来的工作实践,来详细讲述一下作为IT从业人员要掌握的一些基础网络知识。

    2025年8月30日
    3
  • 构造哈夫曼树的算法_哈夫曼树的应用数据结构

    构造哈夫曼树的算法_哈夫曼树的应用数据结构一、什么是赫夫曼树给定n个权值作为n个叶子节点,构造一课二叉树,若该树的带权路径长度和(wpl)达到最小,称这样的二叉树为最优二叉树,也就是赫夫曼树。要理解这句话,我们需要了解几个关键词:路径:

    2022年8月16日
    5
  • ps测量精灵图[通俗易懂]

    ps测量精灵图[通俗易懂]1.调出图片信息2.测量图片大小、3.把鼠标放在需要用到的小图片的左上角  精灵图的测量:B站中有详细的教程    第43集  京东项目精灵图的使用:B站精灵图的使用第24集   李江南讲解精灵图第44集  定位口诀:子绝父相(孩子是绝对定位,父亲是相对定位;)…

    2022年6月10日
    36
  • Linux同步机制_进程同步机制

    Linux同步机制_进程同步机制Linux中的同步机制(一)–Futex引子在编译2.6内核的时候,你会在编译选项中看到[*]Enablefutexsupport这一项,上网查,有的资料会告诉你”不选这个内核不一定能正确的运行使用glibc的程序”,那futex是什么?和glibc又有什么关系呢?1.什么是FutexFutex是FastUserspacemuTexes的缩写,由Hubertus

    2025年11月20日
    3
  • SQL Server2008安装详细教程[通俗易懂]

    SQL Server2008安装详细教程[通俗易懂]1.将光盘文件解压成文件夹格式,(解压过程比较慢,请耐心等待);2.打开开始菜单的设置;3.打开设置后,点击更新和安全,然后进入;4.在Windows安全中心,将其关闭(注意我这里已经关闭了);5.然后再到安装包文件夹目录,找到setup.exe文件,右击,以管理员身份运行;6.右击运行后,会出来这个页面(如果没有出现这个页面,请直接跳转至第14步),然后点击下载并安装此功能,进入下一步;7.进入下一个页面后,你会发现它会出来一个正在下载所需的文件的页面,然后等待就行;8

    2022年6月23日
    51
  • 基于单片机的毕业设计简单点的_毕业设计设计思路范文

    基于单片机的毕业设计简单点的_毕业设计设计思路范文单片机毕业设计不用愁!!30篇单片机毕业设计参考案例30篇单片机毕业设计参考案例 这篇文章分享给大四的小伙伴,是时候该准备毕业设计了吧,别偷懒了,第二学期就准备实习了喔,所以小编我就开始为你们准备资料啦,30篇单片机毕业设计参考案例给你们啦,有什么不懂的问题可以加群讨论:813238832。下面就是案例: 更多单片机、物联网,MTK和proteus等资料分享,持续增加中,敬请关…

    2022年10月4日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号