使用Mycat实现数据库读写分离

本文作者:蓝雄威,叩丁狼高级讲师。原创文章,转载请注明出处。

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的.所以在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

如果看到下面这个内容,说明已经配置好了.
image.png

###07安装Mycat
我们这次使用的是

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值