来自:mjsws > 馆藏分类
配色: 字号:
Linux使用Mycat进行数据库的读写分离实例讲解
2018-07-02 | 阅:  转:  |  分享 
  
Linux使用Mycat进行数据库的读写分离实例讲解今天给大家分享一下用Mycat进行数据库的读写分离,本篇文章是基于上一篇的mysql主从
复制。Linux上实现Mysql的主从复制(为Mycat读写分离作准备)服务器1:centos7.3,mysql5.6服务器2:c
entos7.3,mysql5.6接下来,我们来看一下实现读写分离的方法和优缺点。1.读写分离的思路1.1原理顾名思义,读写分离
基本的原理是让主数据库处理事务性增、改、删操作,而从数据库处理查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据
库。1.2实现方式实现方式有很多,但是不外乎分为内部配置和使用中间件,下面列举几个常用的方法:1.配置多个数据源,根据业务需求访
问不同的数据,指定对应的策略:增加,删除,修改操作访问对应数据,查询访问对应数据,不同数据库做好的数据一致性的处理。由于此方法相对
易懂,简单,不做过多介绍。2.动态切换数据源,根据配置的文件,业务动态切换访问的数据库:此方案通过Spring的AOP,Aspa
ctJ来实现动态织入,通过编程继承实现Spring中的AbstractRoutingDataSource,来实现数据库访问的动态切
换,不仅可以方便扩展,不影响现有程序,而且对于此功能的增删也比较容易。3.通过mycat来实现读写分离:使用mycat提供的读写
分离功能,mycat连接多个数据库,数据源只需要连接mycat,对于开发人员而言他还是连接了一个数据库(实际是mysql的myca
t中间件),而且也不需要根据不同业务来选择不同的库,这样就不会有多余的代码产生。每个方法都有优缺点,我们选择对程序代码改动最小(只
改数据源)的方法三,讲解mycat的配置和使用。2.Mycat安装和配置2.1安装步骤?123456789101112131415
16#安装Java环境(mycat基于java)yuminstalljava-1.8.0-openjdk.x86_64#下
载mycatwgethttps://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-2
0180122220033-linux.tar.gz#解压tar-zxvfMycat-server-1.6.5-releas
e-20180122220033-linux.tar.gz#剪切到/usr/local下mvmycat/usr/local/
#创建专门运行mycat账号addusermycat#切换到mycat文件夹路径下cd/usr/local#将文件权限赋
给mycat账号chownmycat:mycat-Rmycat#配置环境变量并添加exportJAVA_HOME=/us
rexportMYCAT_HOME=/usr/local/mycat(如下图所示)vim/etc/profile按Esc,输
入:wq保存退出?12345678#刷新环境变量文件易火棋牌http://www.482223.comsource/etc
/profile#切换mycat用户sumycat#切换目录cd/usr/local/mycat/bin/#启动mycat.
/mycatstart好了,mycat启动成功,我们来看一下读写分离的配置和mycat的连接配置!3.配置Mycat的读写分离3
.1Mycat的目录结构根目录进到conf文件夹里面查看配置文件:3.2配置读写分离信息?12#进入配置文件vi/usr/l
ocal/mycat/conf/schema.xml以下是两种配置方式和配置说明1.提供一个数据库内所有表的权限:2.只显示一
个数据库的指定表:这样对于数据库的读写信息就配置完成了;一般刚开始做,先使用第一种方法。4.配置Mycat的连接信息(账号密码)?
12#进入配置文件vi/usr/local/mycat/conf/server.xml天地棋牌http://www.dad
iqipaigw.cn设置端口和mycat连接信息对于标签,它里面重要的参数列举如下:balance指的负载均衡类型,目前的取值有
4种:1.balance=”0”,不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。2.balance=
”1”,全部的readHost与standbywriteHost参与select语句的负载均衡,简单的说,当双主双从模式(M1-
>S1,M2->S2,并且M1与M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。3.balanc
e=”2”,所有读操作都随机的在writeHost、readhost上分发。4.balance=”3”,所有读请求随机的分发到w
iriterHost对应的readhost执行,writerHost不负担读压力注意:balance=3只在1.4及其以后版本有,
1.3没有。writeType属性:1.writeType=”0”,所有写操作发送到配置的第一个writeHost,第一个挂了切到
还生存的第二个writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties.2.wri
teType=”1”,所有写操作都随机地发送到配置的writeHost,1.5以后废弃不推荐。switchType指的是切换的模式
,目前的取值也有4种:1.switchType=’-1’表示不自动切换2.switchType=’1’默认值,表示自动切换
3.switchType=’2’基于MySQL主从同步的状态决定是否切换,心跳语句为showslavestatus4.
switchType=’3’基于MySQLgalarycluster的切换机制(适合集群)(1.4.1),心跳语句为show
statuslike‘wsrep%’。注意:估计Mycat1.4才开始支持switchType。1.3版本配置该属性的话,日志
里会报错:org.xml.sax.SAXParseException;lineNumber:61;columnNumber:
86;Attribute“switchType”mustbedeclaredforelementtype“data
Host”。MyCAT心跳检查询句配置为showslavestatus,dataHost上定义两个新属性:switch
Type=”2”与slaveThreshold=”100”,此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制,Myc
at心跳机制通过检测showslavestatus中的“Seconds_Behind_Master”,”Slave_IO
_Running”,”Slave_SQL_Running”三个字段来确定当前主从同步的状态及Seconds_Behind_Mast
er主从复制时延,当Seconds_Behind_Master>slaveThreshold时,读写分离筛选器会过滤掉此Slave
机器,防止读到很久以前的旧数据,当主节点宕机后,切换逻辑会检查Slave上的Seconds_Behind_Master是否为0,为
0时则表示主仅同步,可安全切换,否则不会切换。Mycat的配置到这里就算完成了,现在我们重启Mycat并连接测试?1234#切换路径cd/usr/local/mycat/bin#重启./mycatrestart035棋牌http://www.267774.com测试连接:项目开发中,我们只需要将mysql的连接地址换成mycat的地址即可,无需任何其余操作,更不会造成多余的业务逻辑,好了,mycat的简单配置和使用就介绍到这里了!
献花(0)
+1
(本文系mjsws首藏)