Mysql的读写分离中间件该怎么写?听我来说。

网上有很多读写分离的中间件,像proxy,mycat等等,由于本人比较懒,懒得去读各种开源的东西,还是想造轮子来得快。

1、了解mysql通信协议,其中有分4.1之前和4.1版本的,由于4.1之前几乎没有人去使用了,所以我就直接按4.1的版本来实现。

2、找一个解析sql的库,从而得到sql的解析树,从而得知该sql具体是哪类操作,如select、insert、update、delete等等。

3、需要支持监听mysqlclient的连接和去联接mysqlserver服,类似于代理服务器,这里需要连接两个mysqlserver,一个是主库(写)、一个是从库(读)。如下面的配置

监听13306端口,协议为mysql4.1协议,负责监听mysqlclient的连接请求,如下配置:

Mysql的读写分离中间件该怎么写?听我来说。

解析请求的sql,如果是select的话,就跑从库(slave)

Mysql的读写分离中间件该怎么写?听我来说。

到这里就完成了,在这里需要说明一点的是,每一个mysqlclient连接到xdbrouter,xdbrouter都需要给这个mysqlclient连接创建两个连mysqlserver的连接(一主一库),因为mysql对于请求的sql是序号问题,没有办法将多个mysqlclient连接只共用一库一从的连接,这样做保证了数据的安全。代码已经上传到百云了,欢迎大家与我交流。
链接:https://pan.baidu.com/s/1aCsq7mKaWpbAuFsjPLgz7Q?pwd=xx0j
提取码:xx0j

Original: https://www.cnblogs.com/hellohuang/p/16602312.html
Author: HolleHuang
Title: Mysql的读写分离中间件该怎么写?听我来说。

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611910/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 事务

    事务 *事务的简介 事务是一组操作的集合,这是一个不可分割的工作单元。事务将向整个系统提交或取消操作请求。这些操作只能同时成功和失败。 [En] A transaction is …

    数据库 2023年5月24日
    0100
  • 设计模式之享元模式

    一、享元模式模式:享元模式是实现对象重用的一种方式,适用于为了尽可能的减少对象的重复创建而增大资源开销的情况,与单例模式有类似的作用。 二、实现思路 :对象被第一次创建后,如果后续…

    数据库 2023年6月14日
    076
  • 2022-8-11 网络编程(网络通信)

    网络协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这…

    数据库 2023年6月14日
    095
  • MySQL高可用架构-MMM、MHA、MGR、PXC、分库分表(补总结)

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    数据库 2023年5月24日
    087
  • 摸鱼系列之idea摸鱼插件推荐

    前言 作为一枚程序员,上班时候正撸着代码呢,撸不出代码了,没灵感了,看需求念头不通达了,脑瓜里蹦不出一丁点火花了,这时候怎么办?程序在运行,还要好几分钟,等待时间里,白白浪费了,玩…

    数据库 2023年6月16日
    0112
  • JavaWeb核心篇(1)——HTTP/Tomcat/Servlet

    JavaWeb核心篇(1)——HTTP/Tomcat/Servlet 在正式讲解JavaWeb前,我们先来了解一下JavaWeb: Web:全球广域网,也被称为万维网(www),能…

    数据库 2023年6月14日
    093
  • MySQL的Explain总结

    Explain简介 MySQL优化器在基于成本的计算和基于规则的SQL优化会生成一个所谓的 执行计划,我们就可以使用执行计划查看MySQL对该语句具体的执行方式。 介绍这个好啰嗦就…

    数据库 2023年5月24日
    068
  • vue入门(一)

    模板语法 插值语法 功能:用于解析标签体内容 写法:{{xxx}},xxx是js表达式,且可以直接读取到data中的所有属性。 指令语法 功能:用于解析标签(包括:标签属性、标签内…

    数据库 2023年6月6日
    077
  • zabbix自定义监控(mysql主从状态和延迟)

    zabbix自定义监控 需要先配置mysql主从,从库上需要安装zabbix_agentdzabbix_server配置zabbix_agentd配置mysql主从配置 监控mys…

    数据库 2023年6月14日
    073
  • 主键约束,唯一约束,默认约束,检查约束,删除主键,删除外键按,删除列,添加列

    关键字:constraint约束是表级限制,它通过限制表的数据来确保数据的完整性和一致性。 [En] A constraint is a table-level restricti…

    数据库 2023年5月24日
    063
  • 【黄啊码】MySQL入门—4、掌握这些数据筛选技能比你学python还有用-1

    大家好!我是黄啊码,今天没继续select * 了吧,如果还继续,那接下来的课程先别学,回去好好把之前的课程重复复习一遍,学明白了我们再会?废话不多说,学今天的课程之前我们先来说说…

    数据库 2023年6月16日
    070
  • Mysql之Binlog

    1、简述 binlog 二进制日志文件,这个文件记录了MySQL所有的DML操作。通过binlog日志我们可以做数据恢复,增量备份,主主复制和主从复制等等。 2、Docker中无法…

    数据库 2023年6月16日
    083
  • ReentrantLock 公平锁源码 第0篇

    ReentrantLock 0 关于ReentrantLock的文章其实写过的,但当时写的感觉不是太好,就给删了,那为啥又要再写一遍呢 最近闲着没事想自己写个锁,然后整了几天出来后…

    数据库 2023年6月16日
    075
  • MySQL数据库 DDL 阻塞问题定位 【转载】

    陈臣,甲骨文MySQL首席解决方案工程师,公众号《MySQL实战》作者,有大规模的MySQL,Redis,MongoDB,ES的管理和维护经验,擅长MySQL数据库的性能优化及日常…

    数据库 2023年6月16日
    076
  • MIT 6.824 Lab2A Raft之领导者选举

    实验准备 实验代码: git://g.csail.mit.edu/6.824-golabs-2021/src/raft 如何测试: go test -run 2A -race 相关…

    数据库 2023年6月14日
    091
  • Java基础一—面向对象三大特性

    写在最前 本系列为个人对BAT大厂面试题与全栈知识体系结合的简化梳理及本人在日常学习中一些知识的整理(包括但不限于书本、他人博客、微信公众号等渠道),仅为个人总结学习与整理知识框架…

    数据库 2023年6月6日
    069
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球