Mycat
Mycat
第一章 入门概述
1.1 是什么
Mycat是数据中间件
- 数据库中间件
中间件:是一类连接软件组件和应用的计算机软件,以便于软件各部分之间的沟通.
例子:tomcat,web中间件.
数据中间件:连接 java应用程序和数据库 - 数据库中间件对比
数据库中间件(天上飞的理念,地上落地的实现)
- 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原作者维护的一个版本)研发的中间件
- mycat的官网
http://www.mycat.org.cn/
1.2 干什么的
- 读写分离
- 数据分片
垂直拆分(分库),水平拆分(分表),垂直+水平拆分(分库分表)
- 多数据源整合
1.3 原理
- Mycat 的原理最重要的一个动词时 "拦截" ,他拦截了用户发送过来的 sql语句,首先对 sql语句做了一些特定的分析,如分片分析,路由分析,读写分离分析,缓存分析等,然后将从 sql发往后端的真是数据库,并返回的结果做适当的处理,最终返回给用户.
这种方式把数据库的分布式从代码中解耦出来,程序员察觉不出来后台 使用 Mycat还是 Mysql.
第二章 安装启动
2.1 安装
0. 去官网下载,放到 /opt 目录下,执行
tar -zxvf Mycat-server-1.6.7.6-release-20210930213049-linux.tar.gz
- 加压后即可使用: 解压缩文件拷贝到 Linux写 /usr/local/
cp -r mycat /usr/local/ - 三个配置文件
schema.xml : 定义逻辑库,表,分片节点等内容
rule.xml : 定义分片规则
server.xml : 定义用户以及系统相关便令,如端口等.
2.2 启动
-
修改配置文件 server.xml
修改用户信息,与 mysql区分,如下
-
修改配置文件 schema.xml
删除 <schema>标签的表信息 <dataNode>标签只留一个, <dataHost> 标签只留一个, <writeHost> <readHost> 只留一对
-
验证数据库的访问情况
mycat 作为数据中间件要和数据库部署在不同机器上,所以要验证远程访问情况.mysql -uroot -proot -h 192.168.217.13 -P3306
mysql -u用户名 -p密码 -h ip地址 -P端口号 -
启动程序
- 控制台: 去 mycat/bin 目录下执行 ./mycat console
- 后台启动: 去 mycat/bin 目录下 ./mycat start
六个特殊目录不需要 加点斜杠的 bin ; usr/bin ; usr/local/bin ; sbin ; usr/sbin ; usr/lcoal/sbin
-
启动时可能出现报错
如果操作系统时 centos6.8,可能会出现域名解析失败错误
可以按照一些步骤解决- 用 vim 修改 /etc/hosts 文件,在 127.0.0.1 后面增加你的机器名
- 修改后重新启动网络服务
- 用 vim 修改 /etc/hosts 文件,在 127.0.0.1 后面增加你的机器名
2.3 登录
- 登录后台管理窗口
此登录方式用于管理维护 Mycat
mysql -u用户 -p密码 -P 端口号 -h ip地址
- 登录数据窗口
此登录方式用于通过 Mycat查询数据,我们选择这种方式访问 mycat
mysql -u用户 -p密码 -P 端口号 -h ip地址
第三章 搭建读写分离
- 我们通过 Mycat 和 Mysql 的主从复制配合搭建数据的读写分离,实现 myslq 的高可用性.我们将搭建:
一主一丛,双主双从两种读写分离模式
3.1 一主一从
- 一个主机用于处理所有写请求,一台从机负责所有读请求,架构图如下
- 搭建 MySql数据库主从复制
- MySQL 主从复制原理
- 主机配置
- MySQL 主从复制原理
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步