MYSQL系列分库分表(四):MYCAT实现分库分表落地实践上

2023年 9月 26日 73.8k 0

系列文档参考 MYSQL系列-整体架构介绍
前文已经实践基于Spring动态数据源和基于Sharing-JDBC的分库分表,本文主要讲述基于MYCAT的分库分表,前两篇如下:

  • MYSQL系列-分库分表(二):Spring动态数据源实现分库分表落地实践-上
  • MYSQL系列-分库分表(三):Sharding-JDBC实现分库分表落地实践-上

原始需求

同前面两章介绍

MYCAT介绍

基本介绍

MyCAT(全称为MySQL Cluster Autonomic Tuning)是一款开源的分布式数据库中间件,旨在提供高性能、高可用性和可伸缩性的数据访问解决方案。它是基于MySQL协议的代理服务器,可以将多个MySQL数据库组织成一个逻辑的数据库集群,并提供了分片、负载均衡、读写分离、故障转移等功能。

官网地址如下:www.mycat.org.cn/

image.png

主要特点和功能

  • 数据分片:MyCAT支持将数据划分为多个分片,每个分片可以部署在不同的MySQL节点上。数据分片可以水平扩展数据库的容量和性能,并提供更好的负载均衡。
  • 负载均衡:MyCAT作为代理服务器,可以根据负载情况自动将请求分发到不同的MySQL节点上,实现负载均衡和并行处理。它支持多种负载均衡策略,如轮询、权重、一致性哈希等。
  • 读写分离:MyCAT可以将读请求和写请求分别路由到不同的MySQL节点上,实现读写分离。这可以提高数据库的并发性能,减轻主节点的压力,并提供更好的用户体验。
  • 故障转移和容灾:MyCAT支持节点的故障检测和自动切换,当某个MySQL节点发生故障时,它可以自动将请求转发到其它可用节点上,实现高可用性和容灾。
  • 分布式事务:MyCAT支持分布式事务的处理,可以保证跨分片的事务的一致性和隔离性。它使用两阶段提交(2PC)协议来处理分布式事务。
  • 数据一致性:MyCAT提供了数据同步和复制机制,可以确保分片数据的一致性。它支持同步复制和异步复制两种方式,可以根据实际需求进行配置。
  • SQL解析和优化:MyCAT可以解析SQL语句,并对其进行优化和重写,以提高查询性能。它支持常见的SQL语法和函数,并提供了一些扩展功能,如分页查询、全局序列、分布式函数等。
  • 监控和管理:MyCAT提供了丰富的监控和管理功能,可以实时监控数据库的运行状态、性能指标和集群拓扑。它提供了Web控制台和命令行工具,方便管理员进行配置和管理操作。
  • 实现原理

    Mycat主要原理是通过对SQL的拦截,然后经过一定规则的分片解析、路由分析、读写分离分析、缓存分析等,然后将SQL发给后端真实的数据块,并将返回的结果做适当处理返回给客户端。

    当Mycat收到一个SQL时,会先解析这个SQL,查找涉及到的表,然后看此表的定义,如果有分片规则,则获取到SQL里分片字段的值,并匹配分片函数,得到该SQL对应的分片列表,然后将SQL发往这些分片去执行,最后收集和处理所有分片返回的结果数据,并输出到客户端。

    image.png

    架构介绍

    MyCat 在逻辑上由几个模块组成:通信协议、路由解析、结果集处理、数据库连接、监控等模块。

    image.png

    1、 通信协议模块:

    指的是客户端与服务端之间的通信,涉及到 i/o 模型,会有客户端与服务端 i/o 的架构,还包含 MyCat 和 Mysql 交互的协议,通信协议模块承担底层的收发数据、线程回调处理工作,MyCat 通信协议默认采用Reactor模式,在协议层采用 Mysql 协议。

    通讯协议模块职责是底层收发数据以及 Mysql 协议的模拟。

    2、 路由解析模块:

    负责对客户端传入的 sql 语句进行语法解析,解析语句的条件、类型、关键字、查询方式等,并进行优化。

    3、 sql 执行模块:

    比如有一条查询语句在路由解析模块查询解析并且优化完后交给 sql 执行模块,负责从连接池中获取连接,再根据路由解析的结果,把 sql 语句分发到相应的节点执行。

    4、 数据库连接模块:

    mycat 将 sql 语句分发到 mysql 各个节点,连接 mysql 涉及到连接维护,涉及到连接池等,就会对各个节点的结果进行一个处理,负责创建、管理、维护后端的连接池。为减少每次建立数据库连接的开销,数据库使用连接池机制对连接声明周期进行管理。

    5、 结果集处理模块:

    当执行完 sql 语句,它会有相关的结果集,mycat 拿到各个节点返回的结果集,对其结果集进行处理,负责对跨分片的查询结果进行汇聚、排序、截取等。

    6、 监控管理模块:

    负责 MyCat 的连接、MyCat 中的 i/o、内存等资源进行监控和管理。也会监控在 MyCat 中执行的 sql 语句,是插入为主还是查询为主,针对各个表的操作,针对于各个节点的操作,在监控平台中都可以看到,监控主要通过管理指令及监控服务展现一些监控数据,管理则主要通过轮询事件来检测和释放不适用的资源。

    未完待续,下文讲述MYCAT配置分库分表实践操作

    参考

  • 分布式数据库中间件Mycat介绍
  • 分库分表技术之MyCat(2)
  • MyCat - 架构剖析 - 总体架构介绍 | 学习笔记
  • 相关文章

    Oracle如何使用授予和撤销权限的语法和示例
    Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
    下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
    社区版oceanbase安装
    Oracle 导出CSV工具-sqluldr2
    ETL数据集成丨快速将MySQL数据迁移至Doris数据库

    发布评论