本文作者:蓝雄威,叩丁狼高级讲师。原创文章,转载请注明出处。
01前言
在上一篇文章中,我们基于CentOS7实现了MySQL的主从复制,我们需要把DML操作放在MySQL的主节点执行,需要把DQL操作放在MySQL的从节点执行.那在应用程序中我们怎么控制这个逻辑呢?
下面是一种可行的方案:
1.在项目中配置两个数据源(一主一从),分别是A(主)和B(从)。
2.在程序中判断是不是select操作,如果是就把数据源更换成B,如果不是select操作就更换成A,这样就可以实现程序中的读写分离了.
3.关于步骤2的更换数据源,Spring中是提供了AbstarctRoutingDataSource
这个类在程序中实现数据源的切换的.
这种方案可行是可行,但是在应用程序端需要写挺多代码的,而且这些属于非业务层面的东西,写在项目中对项目来说是代码侵入了.
所以对于读写分离我们可以使用Mycat数据库中间件来完成.
02MyCat介绍
关于MyCat的详细简介,同学们可以去Mycat官网.下载Mycat权威指南.pdf
来看,文章中的前世今生写得幽默有趣,挺有意思的,从描述来看都感觉看的不是本技术书,而是本小说哈.在这里我简单的介绍一下Mycat:
2008年阿里开源了一款数据库中间件Amoeba,随着业务的增长,这块产品不能支持目前已有的业务.阿里又开源了Cobar这款中间件,这款产品在阿里内部得到了很广泛的应用.(应用在了3000多台服务器,每天超过10亿次的数据库访问),当时一开源就得到了开发者和运维人员的追捧. 开源之后,阿里就没有对这款产品维护了,这款产品在生产环境中还是存在挺多问题的.在这样的场景下MyCat诞生了,2013年MyCat社区在Cobar的基础上进行了很大的改造和升级.
03Mycat优势
优势这个我就从官网上给同学们摘抄下来了:
基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得MYCAT一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远。业界优秀的开源项目和创新思路被广泛融入到MYCAT的基因中,使得MYCAT在很多方面都领先于目前其他一些同类的开源项目,甚至超越某些商业产品。
MYCAT背后有一支强大的技术团队,其参与者都是5年以上软件工程师、架构师、DBA等,优秀的技术团队保证了MYCAT的产品质量。
MYCAT并不依托于任何一个商业公司,因此不像某些开源项目,将一些重要的特性封闭在其商业产品中,使得开源项目成了一个摆设。
目前也有挺多公司在生产环境上使用Mycat的,使用案例,所以来说还是一款很不错,很稳定的产品.
04主要作用
主要作为分布式数据库系统的中间层
1.可以实现数据库的读写分离
2.支持负载均衡
3.支持后端MySQL高可用
4.数据库的垂直拆分
5.数据库水平拆分
关于Mycat如何实现数据库的分库分表,我在之前的简书中已经写了案例,数据库中间件Mycat+SpringBoot完成分库分表.
05Mycat的基本概念
从上图可以看到,我们应用程序不是直接连接真实数据库的的,而是连接Mycat的.所以在Mycat的配置文件中我们就需要去定义逻辑库
、逻辑表
和真实库
、真实表
的映射关系
06安装JDK环境变量
0.我们Mycat的安装是基于CentOS7环境来安装的,所以同学们先把基础环境搭建好哈.
1.Mycat是基于Java开发的一款中间件产品,所以要使用Mycat前需要把JDK的环境装上.JDK1.8安装包.
2.下载好jdk1.8安装包后,通过工具上传到服务器上.我们通常会把文件上传到/usr/local/software
目录下
3.然后使用解压命令解压到/usr/local
目录下
tar -zxvf jdk-8u161-linux-x64.tar.gz -C /usr/local
但是名字有些长,不方便我们设置环境变量,所以我们可以对这个文件夹重命名
mv jdk1.8.0_161/ jdk1.8
4.jdk解压好之后,我们就可以来配置环境变量了.
vi /etc/profile
编辑界面如下:
需要在这个文件中添加这两行配置:
export JAVA_HOME=/usr/local/jdk1.8
export PATH=.:$JAVA_HOME/bin:$PATH
编辑后如下图所示:
然后保存退出即可.
然后需要通过这个命令来重新加载配置文件:
source /etc/profile
设置好之后,通过这个命令查看环境变量是否配置好了.
java -version
如果看到下面这个内容,说明已经配置好了.
###07安装Mycat
我们这次使用的是