可以在开始之前,阅读Mycat简略文档,对其有个大概了解。
注:MyCAT 支持多种数据库接入,分别有:mongodb、oracle、sqlserver 、hive 、db2 、 postgresql。
mycat应用场景如下:
单纯的读写分离,此时配置最为简单,支持读写分离,主从切换;
分表分库,对于超过 1000 万的表进行分片,最大支持 1000 亿的单表分片;
多租户应用,每个应用一个库,但应用程序只连接 Mycat,从而不改造程序本身,实现多租户化;
报表系统,借助于 Mycat 的分表能力,处理大规模报表的统计;
替代 Hbase,分析大数据;
作为海量数据实时查询的一种简单有效方案,比如 100 亿条频繁查询的记录需要在 3 秒内查询出来结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,此时 Mycat 可能是最简单有效的选择。
在mycat中有以下三个比较重要的专业术语,这里简单写一下:
Schema:逻辑库,与MySQL中的databases(数据库)对应,一个逻辑库中定义了所包括的table。
table:逻辑表,就是物理数据库中存储的某一张表,与传统的数据库不同,这里的表格要声明其所存储的逻辑数据节点datanode,再次可以指定表的分片规则。
datanode:mycat的逻辑数据节点,是存放table的具体物理节点,也称之为分片节点,通过datasource来关联到后端某个具体数据库上。
datasource:定义某个物理库的访问地址,用于捆绑到datanode上。
本博文实现功能如下:
MySQL服务器两台,用来做主从复制;
mycat服务器一台,针对两台MySQL服务器做读写分离。
上述环境类似于web群集,前端nginx代理(这里是mycat),后端两个MySQL服务,slave服务器用来读数据,master服务器用来写数据。
1、准备mycat部署环境
系统 IP 主机名 服务
Centos 7.5 192.168.20.2 mysql01 MySQL 5.7.24
Centos 7.5 192.168.20.3