Mycat

视频地址

Mycat

第一章 入门概述

image

1.1 是什么

Mycat是数据中间件

  1. 数据库中间件
    中间件:是一类连接软件组件和应用的计算机软件,以便于软件各部分之间的沟通.
    例子:tomcat,web中间件.
    数据中间件:连接 java应用程序和数据库
  2. 数据库中间件对比
    数据库中间件(天上飞的理念,地上落地的实现)
    - cobar:阿里团队开发,已多年无维护更新
    - mycat:基于 cobar二次开发 开源社区维护
    - OneProxy:不开源的商业中间件
    - kingshard:go语言开发,在不断完善
    - Vitess:YouTube生产在使用,不支持 MySQL原生协议
    - Atlas: 360团队基于 mysqlproxy改写,高并发不稳定
    - MaxScale: maxScale是 mariadb研发的中间件
    - MySQLRoute: MySQLRoute 是MySQL官方 Oracle公司发布的中间件
    • Cobar 属于 阿里 B2B事业群,始于 2008,在阿里服役3年多,接管 3000+ MySQL数据的 shema,集群日处理在线 sql请求50亿次以上.由于 Cobar发起人离职,Cobar停止维护.
    • Mycat 是开源社区在阿里 cobar基础上进行二次开发,解决了 cobar存在的问题,并且加入了许多新的功能在其中.青出于蓝而胜于蓝.
    • OneProxy 基于 MySQL官方 proxy思想利用 c进行开发的,OneProxy是一款商业收费的中间件.舍弃了一些功能,专注在性能和稳定性上.
    • kingshard 由小团队用 go语言开发,还需要发展,需要不断完善.
    • Vistess 是 YouTube生产在使用,架构很复杂.不支持 MySQL原生协议,使用大量改造成本
    • Atlas 是 360团队基于 mysqlproxy改写,功能还需完善,高并发下不稳定.
    • MaxSale 是 mariadb(MySQL原作者维护的一个版本)研发的中间件
  3. mycat的官网
    http://www.mycat.org.cn/

1.2 干什么的

  1. 读写分离
    image
    image
  2. 数据分片
    垂直拆分(分库),水平拆分(分表),垂直+水平拆分(分库分表)
    image
    image
  3. 多数据源整合
    image

1.3 原理

  • Mycat 的原理最重要的一个动词时 "拦截" ,他拦截了用户发送过来的 sql语句,首先对 sql语句做了一些特定的分析,如分片分析,路由分析,读写分离分析,缓存分析等,然后将从 sql发往后端的真是数据库,并返回的结果做适当的处理,最终返回给用户.
    image
    这种方式把数据库的分布式从代码中解耦出来,程序员察觉不出来后台 使用 Mycat还是 Mysql.

第二章 安装启动

2.1 安装

image
0. 去官网下载,放到 /opt 目录下,执行
tar -zxvf Mycat-server-1.6.7.6-release-20210930213049-linux.tar.gz

  1. 加压后即可使用: 解压缩文件拷贝到 Linux写 /usr/local/
    cp -r mycat /usr/local/
  2. 三个配置文件
    schema.xml : 定义逻辑库,表,分片节点等内容
    rule.xml : 定义分片规则
    server.xml : 定义用户以及系统相关便令,如端口等.

2.2 启动

  1. 修改配置文件 server.xml
    修改用户信息,与 mysql区分,如下
    image

  2. 修改配置文件 schema.xml
    删除 <schema>标签的表信息 <dataNode>标签只留一个, <dataHost> 标签只留一个, <writeHost> <readHost> 只留一对
    image

  3. 验证数据库的访问情况
    mycat 作为数据中间件要和数据库部署在不同机器上,所以要验证远程访问情况.

    mysql -uroot -proot -h 192.168.217.13 -P3306
    mysql -u用户名 -p密码 -h ip地址 -P端口号

  4. 启动程序

    • 控制台: 去 mycat/bin 目录下执行 ./mycat console
    • 后台启动: 去 mycat/bin 目录下 ./mycat start

    六个特殊目录不需要 加点斜杠的 bin ; usr/bin ; usr/local/bin ; sbin ; usr/sbin ; usr/lcoal/sbin

    image

  5. 启动时可能出现报错
    如果操作系统时 centos6.8,可能会出现域名解析失败错误
    image
    可以按照一些步骤解决

    1. 用 vim 修改 /etc/hosts 文件,在 127.0.0.1 后面增加你的机器名
      image
    2. 修改后重新启动网络服务
      image

2.3 登录

  1. 登录后台管理窗口
    此登录方式用于管理维护 Mycat
    mysql -u用户 -p密码 -P 端口号 -h ip地址
    image
  2. 登录数据窗口
    此登录方式用于通过 Mycat查询数据,我们选择这种方式访问 mycat
    mysql -u用户 -p密码 -P 端口号 -h ip地址
    image

第三章 搭建读写分离

  • 我们通过 Mycat 和 Mysql 的主从复制配合搭建数据的读写分离,实现 myslq 的高可用性.我们将搭建:
    一主一丛,双主双从两种读写分离模式

3.1 一主一从

  • 一个主机用于处理所有写请求,一台从机负责所有读请求,架构图如下
    image
  1. 搭建 MySql数据库主从复制
    1. MySQL 主从复制原理
      image
    2. 主机配置

3.2 双主双从

第四章 垂直拆分

4.1 如何划分表

4.2 配置分库

第五章 水平拆分

5.1 配置分表

原文地址:https://www.cnblogs.com/zk2020/p/15497969.html