MyCAT实现mysql8主从同步读写分离

目录

1.MyCAT2简介

1.1 什么是MyCAT

1.2 为什么使用MyCAT

1.3 MyCAT解决问题的思路

1.3.1 容量

1.3.2 查询速度

1.3.3 写入问题

1.4 数据库中间件对比

1.5 MyCAT和MySQL的区别

1.6 Mycat1.x 与 Mycat2 功能对比

1.7 支持的数据库

1.8 架构

MyCAT功能:

2.MyCAT2名词解释

2.1 分库分表

2.2 逻辑库

2.3 逻辑表

2.4 物理库

2.5 物理表

2.6 拆分键

2.7 分区键

2.8 物理分表

2.9 物理分库

2.10 分库

2.11 分片表、水平分片表

2.12 全局表(广播表)

2.13 集群

2.14 数据源

2.15 schema(库)

3.安装启动

3.1 安装

3.2 启动mycat

4.MyCAT2配置文件介绍

4.1 用户(user)

4.2 数据源(datasource)

4.3 逻辑库与逻辑表(logicaltable)

4.4 序列号(sequence)

4.5 服务器(server)

5.MyCAT2注释配置

5.1 重置配置

5.2 用户相关

5.2.1 创建用户

5.2.2 删除用户

5.2.3 显示用户

5.3 数据源相关

5.3.1 建数据源

5.3.2 删除数据源

5.3.3 显示数据源

5.4 集群相关

5.4.1 创建集群

5.4.2 删除集群

5.4.3 显示集群

6.MySQL主从搭建

7.MyCAT2的主从配置

8.验证读写分离


1.MyCAT2简介

1.1 什么是MyCAT

        MyCAT是目前最流行的分布式数据库中间插件,是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器。前端用户可以把它看作一个数据库代理,用MySQL客户端工具和命令行访问,其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。

        MyCAT发展到目前,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储。未来,它还会支持更多类型的存储。

        不过,无论是哪种存储方式,在最终用户看,MyCAT里都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度。

更多解释见官网: | MYCAT官方网站—中国开源分布式数据库中间件

项目地址:源码地址

GitHub - MyCATApache/Mycat2: MySQL Proxy using Java NIO based on Sharding SQL,Calcite ,simple and fast

Mycat2: Mycat2是Mycat社区开发的一款分布式关系型数据库(中间件)。它支持分布式SQL查询,兼容MySQL通信协议,以Java生态支持多种后端数据库,通过数据分片提高数据查询处理能力

1.2 为什么使用MyCAT

随着互联网的发展,数据的量级也是呈指数的增长,从GB到TB到PB,操作数据也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。

而NoSQL的出现暂时解决了这一危机。

NoSQL通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来提升性能。 但是,NoSQL存在无法满足某些使用场景的情况,比如,有些使用场景绝对要有事务与安全指标。这时NoSQL肯定无法满足。

所以,我们还是需要使用关系型数据库。

        那么,如何使用关系型数据库解决海量存储的问题呢?此时就需要做数据库集群,为了提高查询性能将一个数据库的数据分散到不同的数据库中存储,为应对该问题,MyCAT 就出现了。

我们来总结一下MyCAT的作用:

1)能满足数据库数据大量存储;

2)提高了查询性能;

3)实现读写分离,分库分表。

同时,MyCAT还可以解决如下问题。

1)解决表的容量问题:MySQL的表最大存储多少数据?500W条。

2)解决表查询的性能问题?我的表里面的数据非常多,导致我查询很慢?

3)解决表的DML的性能问题?

4)解决MySQL挂了的问题。

那么,MyCAT是怎么解决上述问题的呢?我们接着往下看。

1.3 MyCAT解决问题的思路

1.3.1 容量

1.3.2 查询速度

最快也是Log(n),你加什么索引都不行。

1.3.3 写入问题

1.4 数据库中间件对比

  1. Cobar属于阿里B2B事业群,始于2008年,在阿里服役3年多,接管3000+个MySQL数据库的schema,集群日处理在线SQL请求50亿次以上。由于Cobar发起人的离职,Cobar停止维护。

  2. Mycat是开源社区在阿里cobar基础上进行二次开发,解决了cobar存在的问题,并且加入了许多新的功能在其中。青出于蓝而胜于蓝。

  3. OneProxy基于MySQL官方的proxy思想利用c进行开发的,OneProxy是一款商业收费的中间件。舍弃了一些功能,专注在性能和稳定性上。

  4. kingshard由小团队用go语言开发,还需要发展,需要不断完善。

  5. Vitess是Youtube生产在使用,架构很复杂。不支持MySQL原生协议,使用需要大量改造成本。

  6. Atlas是360团队基于mysql proxy改写,功能还需完善,高并发下不稳定。

  7. MaxScale是mariadb(MySQL原作者维护的一个版本) 研发的中间件

  8. MySQLRoute是MySQL官方Oracle公司发布的中间件

1.5 MyCAT和MySQL的区别

我们可以把上层看作是对下层的抽象,例如操作系统是对各类计算机硬件的抽象。那么我们什么时候需要抽象?

        假设一个项目只需要一个人完成时,我们不需要Leader,但是当需要几十人完成时,就应该有一个管理者,发挥沟通协调等作用,这个管理者对于他的上层来说就是对项目组的抽象。

        同样的,当我们的应用只需要一台数据库服务器时,我们并不需要MyCAT,如果你需要分库甚至分表,这时候应用要面对很多个数据库时,这时,就需要对数据库层做一个抽象,来管理这些数据库,最上面的应用只需要面对一个数据库层的抽象或者说数据库中间件就好了,这就是MyCAT的核心作用。

所以你可以这样理解:数据库是对底层存储文件的抽象,而MyCAT是对数据库的抽象。

1.6 Mycat1.x 与 Mycat2 功能对比

1、1.x与2.0功能对比图

功能 1.6 2
多语句 不支持 支持
blob值 支持一部分 支持
全局二级索引 不支持 支持
任意跨库join(包含复杂查询) catlet支持 支持
分片表与分片表JOIN查询 ER表支持 支持
关联子查询 不支持 支持一部分
分库同时分表 不支持<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值