1.mycat 配置

首先说一下什么是mycat?

直白话的意思就是说:

1.他是Java语言编写的MySQL数据库网络协议的、活跃的、性能好的数据库中间件,是mysql集群数据库中间件。基于心跳的自动故障切换,支持读写分离。支持分表分库。支持全局序列号,解决分布式下的主键生成问题。mycat 是阿里的开源数据库中间件cobar为基础,所以站在巨人肩膀。

2.原理:

Mycat的原理并不复杂,复杂的是代码,如果代码也不复杂,那么早就成为一个传说了。

Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的 SQL 语句,首先对 SQL 语句做了 一些特定的分析:如分片分析、路由分析、读写分离分析(看是select,insert,update,delete操作)、缓存分析等,然后将此 SQL 发往后端的真实数据库, 并将返回的结果做适当的处理,最终再返回给用户。

3.接下来我们开始我们的项目实战。

Mycat的加入

1).mycat 读写分离配置(前置配置解说需要的工具以及详情)

原理图都有啦,相当于有四个数据库,我们将创建四个不同的四台主机分别是M1,s1,M2,s2

至于 4台主机的的具体创建

关键点:

我们有两种方式

1)我们可以在云原生的基础上docker中 创建四个mysql 镜像,是不是很简单呢?(需要掌握docker技术哦,不会的小伙伴可以先去看看如何docker创建,后期我也会进行详细的发稿一篇docker的技术实战)

2)  我们可以用VM虚拟机创建四台不同的服务器(第2个(选择)使用虚拟机)

开始啦 继续往下看,我们先使用vm创建一台虚拟机

1)拿最基础的机子克隆一台mycat服务器 ,修改IP,修改主机名称。

依赖jdk

vim /etc/sysconfig/network-scripts/ifcfg-ens33

vim /etc/hostname 

2),下载,解压mycat,配置环境变量

从官网下载相关版本,使用xftp上传到linux服务器

下载地址

这是mycat的版本呢。下载相应的版本即可。用xshell 或者其他编辑器或其他stfp软件即可

Index of /1.6.7.6/20201104174609/icon-default.png?t=M276http://dl.mycat.org.cn/1.6.7.6/20201104174609/

解压:

tar -xzvf /root/software/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz  -C /usr/

配置环境变量:

vim /etc/profile

复制下面内容:

export MYCAT_HOME=/usr/mycat

export PATH=$PATH:$JAVA_HOME/bin:$MYCAT_HOME/bin

让配置文件生效:

source /etc/profile

测试:

echo $MYCAT_HOME

server.xml配置

server.xml 几乎保存了所有 mycat 需要的系统配置信息(全局配置,在server.xml配置可以全局产生影响)。其在代码内直接的映射类为 SystemConfig 类。server.xml 中的标签本就不多,这个标签主要用于定义登录 mycat 的用户(密码)和权限(能问那些表,以及针对该表的访问权限)。

vim /usr/mycat/conf/server.xml

4), schema.xml配置

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

vim /usr/mycat/conf/schema.xml

 这里我用的是我的配置,具体您需要看官网手册,有详细的配置信息,我这里就不过多解释

同样的我们找4台有安装mysql 的服务器(可以是新创建的服务器,需要安装msyql哦,这是基础。然后克隆4台就是我所说的M1,M2,s1,s2)

 

继续上边的操作,分别修改主机名称, 修改 mysql配置文件下的etc/local/mysql/conf/my.cnf 中

操作server-id分别是1,2,3,4  例如第一台 server-id=1, 第二台克隆机子为server-id=2,,,,,

还要操作 M1,M2 中不仅仅是server-id的修改,如果自定义log_bin mysql 的操作记录文件。

这里的log_bin主要是从机s1(例如s1是M1的从机)需要读取M1的log_bin文件。

这个时候您就可以自定义啦。  那我们将M1中的log_bin 修改成为M1_cluster_log

废话不多说

继续

打开主机进入mysql

show master status;

会显示这样的数据

也打开从机进入mysql

写入  stop slave ;

change master to master_host='您的主机IP',master_user='root',master_password='您的主机密码',master_log_file='您的主机的自定义或者默认的文件名称',master_log_pos=位置

好啦 其实这里读写分离的前提下需要先有主从复制,您们可以先去看看帖子主从复制,

我在这里没有去演示,mycat 与主从库是如何连接的, 你们其实只要吧mycat中的schema配置好啦,一切就很简单 啦

这是读写分离的好处:

 读写分离就是数据的写操作(insert udpate delete    create  alter drop等等)和查询(select等)

让不同的数据库服务器执行。 

        数据库读写分离对于大型系统或者访问量(并发量)很高的互联网应用来说,是必不可少的一个重要功能。 从数据库的角度来说,对于大多数应用来说,从集中到分布,最基本的一个需求不是数据存储(写)的瓶颈,而是在于计算(读)的瓶颈,即SQL查询的瓶颈,我们知道,正常情况下,Insert SQL就是几十个毫秒的时间内写入完成,而系统中的大多数Select SQL则要几秒到几分钟才能有结果,很多复杂的SQL,其消耗服务器CPU的能力超强,不亚于死循环的威力。在没有读写分离的系统上,很可能高峰时段的一些复杂SQL查询就导致数据库服务器CPU爆表,系统陷入瘫痪,严重情况下可能导致数据库崩溃。

由于时间的关系,和工作中学习,后续我会推出完整版的主从复制,以及读写分离,以及分库分表操作,喜欢的小伙伴给我点个赞吧。如有不妥文字描述可以私信我,由于第二次发帖,谢谢大家的支持。后续将完整版的docker中去实现所有过程的推出,也祝愿大家健康快乐,共同抗疫,我们一定好起来。再次感谢看过我文章的朋友们。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐