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)
上一篇 2022年6月6日 下午3:00
下一篇 2022年6月6日 下午3:00


相关推荐

  • sql prompt工具

    sql prompt工具SQLPrompt是一款拥有SQL智能提示功能和格式化Sql代码插件。可用于的SQLServer和VS。SQLPrompt能根据数据库的对象名称,语法和用户编写的代码片段自动进行检索,智能的为

    2022年7月1日
    35
  • PKI体系标准_三体系

    PKI体系标准_三体系转自CSDN.在PKI体系中涉及到四类标准,下面做个简单介绍。1.asn.1基本编码规范Asn.1是描述在网络上传输信息格式的标准方法。它有两个部分:第一部分(X.208)描述信息内的数据、数据类型及序列格式,也就是数据的语法;第二部分(X.209)描述如何将各部分数据组成消息,也就是数据的基本编码规则(DER编码)。Asn.1原来是作为X.409的一部分而开发的,后来独立发展

    2022年8月22日
    10
  • 怎么查看Grok的历史对话 Grok聊天记录查找与管理方法【步骤】

    怎么查看Grok的历史对话 Grok聊天记录查找与管理方法【步骤】

    2026年3月15日
    3
  • python网络攻击监测_KRACK Detector 用于检测并防止您网络中KRACK攻击的Python脚本[通俗易懂]

    python网络攻击监测_KRACK Detector 用于检测并防止您网络中KRACK攻击的Python脚本[通俗易懂]KRACKDetectorKRACKDetectorisaPythonscripttodetectpossibleKRACKattacksagainstclientdevicesonyournetwork.ThescriptismeanttoberunontheAccessPointratherthantheclientdevice…

    2022年6月3日
    41
  • PyCharm和Python的关系

    PyCharm和Python的关系pycharm 和 python 一样吗 什么是 Python 什么是 pycharm Python 是一种计算机程序设计语言 是一种面向对象的动态类型语言 最初被设计用于编写自动化脚本 shell 随着版本的不断更新和语言新功能的添加 越来越多被用于独立的 大型项目的开发 PyCharm 是 Python 的专用 IDE 地位类似于 Java 的 IDEEclipse 功能齐全的集成开发环境同时提供收费版和免费版 即专业版和社区版 PyCharm 是安装最快的 IDE 且安装后的配置也非常简单 因此 PyCh

    2026年3月27日
    1
  • matlab griddata nan,请教Matlab的griddata的用法

    matlab griddata nan,请教Matlab的griddata的用法请教Matlab的griddata的用法以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!请教Matlab的griddata的用法MATLAB散乱点插值函式griddata函式语法:ZI=griddata(x,y,z,XI,YI)[XI,YI,ZI]=griddata(x,y,z,XI,YI)[…]=gri…

    2022年5月9日
    41

发表回复

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

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