前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mycat连接池与主从切换架构分析

mycat连接池与主从切换架构分析

作者头像
别团等shy哥发育
发布2023-02-25 14:57:51
7410
发布2023-02-25 14:57:51
举报
文章被收录于专栏:全栈开发那些事

文章目录

1 MyCat连接池架构与实现

  这里我们所讨论的连接池是MyCat的后端连接池, 也就是MyCat后端与各个数据库节点之间的连接架构。

1). 连接池创建

  MyCat按照每个dataHost创建一个连接池, 根据schema.xml文件的配置取得最小的连接数minCon, 并初始化minCon个连接。在初始化连接时, 还需要判定用户选择的是JDBC还是原生的MySQL协议, 以便于创建对应的连接。

2). 连接池分配

  分配连接就是从连接池队列中取出一个连接, 在取出一个连接时, MyCat需要根据负载均衡(balance属性)的类型选择不同的数据源, 因为连接和数据源绑在一起,所以需要知道MyCat读写的是那些数据源, 才能分配响应的连接。

3). 架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bbbk12MP-1634717069463)(assets/image-20200108162456464.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bbbk12MP-1634717069463)(assets/image-20200108162456464.png)]

2 MyCat主从切换架构与实现

2.1 MyCat主从切换概述

  MyCat实现MySQL读写分离的目的在于降低单节点数据库的访问压力, 原理就是让主数据库执行增删改操作, 从数据库执行查询操作, 利用MySQL数据库的复制机制将Master的数据同步到slave上。

  当master宕机后,slave承载的业务如何切换到master继续提供服务,以及slave宕机后如何将master切换到slave上。手动切换数据源很简单, 但不是运维工作的首选,本节重点就是讲解如何实现自动切换。

  MyCat的读写分离依赖于MySQL的主从同步, 也就是说MyCat没有实现数据的主从同步功能, 但是实现了自动切换功能。

1). 自动切换

  自动切换是MyCat主从复制的默认配置 , 当主机或从机宕机后, MyCat自动切换到可用的服务器上。 假设写服务器为M, 读服务器为S, 则:

正常时, 写M读S;

当M宕机后, 读写S ; 恢复M后, 写S, 读M ;

当S宕机后, 读写M ; 恢复S后, 写M, 读S ;

2). 基于MySQL主从同步状态的切换

  这种切换方式与自动切换不同, MyCat检测到主从数据同步延迟时, 会自动切换到拥有最新数据的MySQL服务器上, 防止读到很久以前的数据。

  原理就是通过检查MySQL的主从同步状态(show slave status)中的Seconds_Behind_Master、Slave_IO_Running、Slave_SQL_Running三个字段,来确定当前主从同步的状态以及主从之间的数据延迟。 Seconds_Behind_Master为0表示没有延迟,数值越大,则说明延迟越高。

2.2 MyCat主从切换实现

  基于延迟的切换, 则判断结果集中的Slave_IO_Running、Slave_SQL_Running两个个字段是否都为yes,以及Seconds_Behind_Master 是否小于配置文件中配置的 slaveThreshold的值, 如果有其中任何一个条件不满足, 则切换。

主要流程如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G5SEA7jJ-1634717069475)(assets/image-20200128005840029.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G5SEA7jJ-1634717069475)(assets/image-20200128005840029.png)]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1 MyCat连接池架构与实现
  • 2 MyCat主从切换架构与实现
    • 2.1 MyCat主从切换概述
      • 2.2 MyCat主从切换实现
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档