使用Mycat搭建MySQL集群

一、什么是Mycat

1、一个彻底开源的,面向企业应用开发的“大数据库集群”
2、支持事务、ACID、可以替代Mysql的加强版数据库
3、一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群
4、一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server
5、结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
6、一个新颖的数据库中间件产品

二、Mycat的目标

低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题
自动故障切换,高可用性

1、支持读写分离,支持Mysql双主多从,以及一主多从的模式
2、支持全局表,数据自动分片到多个节点,用于高效表关联查询
3、支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询
4、多平台支持,部署和实施简单

三、Mycat解决的问题

1、性能问题
2、数据库连接过多
3、E-R分片难处理
4、可用性问题
5、成本和伸缩性问题
MyCAT解决的问题

四、Mycat对数据库的支持

在这里插入图片描述

五、Mycat分片策略

MyCAT支持水平分片与垂直分片:
•水平分片:一个表格的数据分割到多个节点上,按照行分隔。
•垂直分片:一个数据库中多个表格A,B,C,A存储到节点1上,B存储到节点2上,C存储到节点3上。
在这里插入图片描述
MyCAT通过定义表的分片规则来实现分片,每个表格可以捆绑一个分片规则,每个分片规则指定一个分片字段并绑定一个函数,来实现动态分片算法。

1、Schema:逻辑库,与MySQL中的Database(数据库)对应,一个逻辑库中定义了所包括的Table。
2、Table:表,即物理数据库中存储的某一张表,与传统数据库不同,这里的表格需要声明其所存储的逻辑数据节点DataNode。在此可以指定表的分片规则。
3、DataNode:MyCAT的逻辑数据节点,是存放table的具体物理节点,也称之为分片节点,通过DataSource来关联到后端某个具体数据库上
4、DataSource:定义某个物理库的访问地址,用于捆绑到Datanode上

六、Mycat下载及安装

官方网站http://www.mycat.org.cn/
github网站https://github.com/MyCATApache
在这里插入图片描述
在这里插入图片描述

1、Mycat安装环境

(1)系统环境选用CenterOS 7;
(1)安装JDK配置,且配置环境变量;
(2)安装MySQL;
以上两步可参考:https://blog.csdn.net/qq_36171794/article/details/86689336

2、安装Mycat

(1)通过SecureCRT将Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz上传到CenterOS指定目录下:
上传成功(2)将MyCat移动至指定目录,此教程我将它放置在/etc/local目录下;
(3)解压MyCat:

tar -zxvf Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz

解压mycat
(4)分片配置:
首先我们需要准备两个MySQL数据库,在一个数据库中创建db1、db2两个库,在另一个数据库中创建db库,如下图:
分库
进入/mycal/conf目录下,我们需要配置的文件,如下图:
在这里插入图片描述
我们要把表分配到三个节点上(数据库),这时我们配置mycat的schema.xml

Schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource。弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。

schema 标签用于定义MyCat实例中的逻辑库
Table 标签定义了MyCat中的逻辑表
dataNode 标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。
dataHost标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。

注意:若是LINUX版本的MYSQL,则需要设置为Mysql大小写不敏感,否则可能会发生表找不到的问题。在MySQL的配置文件中my.ini [mysqld] 中增加一行(linux下叫my.cnf) 
  lower_case_table_names = 1**加粗样式**

此处我们一userinfo表的分片为例:
在这里插入图片描述
填坑:上边的配置参数中checkSQLschema必须配置为true,否则你会发现用SQL语句建表OK,用工具就报错了!
(5)进入server.xml配置Mycat用户:

vim server.xml

在这里插入图片描述
(6)进入wrapper.cnf配置mycat连接超时时间:

vim wrapper.cnf

在这里插入图片描述

(7)启动Mycat:

// 开启mycat
./mycat start
// 查看mycat启动状态
./mycat status

在这里插入图片描述
(8)端口放行:
mycat默认端口为:8066,需要在linux下放行,否则无法远程连接!

// 将8806加入安全域
firewall-cmd --zone=public --add-port=8066/tcp --permanent
// 重启防火墙
firewall-cmd --reload
// 查看端口是否已放行
firewall-cmd --zone=public --list-ports

在这里插入图片描述

七、Mycat测试

1、连接MyCat

在这里插入图片描述

2、建表:

在这里插入图片描述

参考资料:
[1]:mysql集群搭建 https://www.cnblogs.com/hanguoqing/p/10244690.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值