前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mycat oracle读写分离_mycat读写分离原理

mycat oracle读写分离_mycat读写分离原理

作者头像
全栈程序员站长
发布2022-11-04 16:05:58
8960
发布2022-11-04 16:05:58
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

今天做不成的事,明天也不会做好。


各位同学大家好,今天给大家分享一下用Mycat进行数据库的读写分离,本篇文章是基于上一篇的mysql主从复制。Linux上实现Mysql的主从复制(为Mycat读写分离作准备) 在上一篇文章中,我们在两个服务器使用同版本的操作系统和mysql: 服务器1:centos7.3,mysql5.6 服务器2:centos7.3,mysql5.6 接下来,我们来看一下实现读写分离的方法和优缺点。


1.读写分离的思路

1.1 原理

顾名思义,读写分离基本的原理是让主数据库处理事务性增、改、删操作,而从数据库处理查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

这里写图片描述
这里写图片描述

1.2 实现方式

实现方式有很多,但是不外乎分为内部配置和使用中间件,下面列举几个常用的方法: 1.配置多个数据源,根据业务需求访问不同的数据,指定对应的策略:增加,删除,修改操作访问对应数据,查询访问对应数据,不同数据库做好的数据一致性的处理。由于此方法相对易懂,简单,不做过多介绍。 2. 动态切换数据源,根据配置的文件,业务动态切换访问的数据库:此方案通过Spring的AOP,AspactJ来实现动态织入,通过编程继承实现Spring中的AbstractRoutingDataSource,来实现数据库访问的动态切换,不仅可以方便扩展,不影响现有程序,而且对于此功能的增删也比较容易。 3. 通过mycat来实现读写分离:使用mycat提供的读写分离功能,mycat连接多个数据库,数据源只需要连接mycat,对于开发人员而言他还是连接了一个数据库(实际是mysql的mycat中间件),而且也不需要根据不同业务来选择不同的库,这样就不会有多余的代码产生。


每个方法都有优缺点,我们选择对程序代码改动最小(只改数据源)的方法三,讲解mycat的配置和使用。

2.Mycat安装和配置

2.1安装步骤

代码语言:javascript
复制
#安装Java环境(mycat基于java)
yum install java-1.8.0-openjdk.x86_64 
# 下载mycat
wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
# 解压
tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
# 剪切到/usr/local下
mv mycat /usr/local/
# 创建专门运行mycat账号
adduser mycat
# 切换到mycat文件夹路径下
cd /usr/local
# 将文件权限赋给mycat账号
chown mycat:mycat -R mycat
#配置环境变量并添加 export JAVA_HOME=/usr export MYCAT_HOME=/usr/local/mycat(如下图所示)
vim /etc/profile
这里写图片描述
这里写图片描述

按Esc,输入:wq保存退出

代码语言:javascript
复制
# 刷新环境变量文件
source /etc/profile
# 切换mycat用户
su mycat
#切换目录
cd /usr/local/mycat/bin/
#启动mycat
./mycat start
这里写图片描述
这里写图片描述

好了,mycat启动成功,我们来看一下读写分离的配置和mycat的连接配置!

3.配置Mycat的读写分离

3.1 Mycat的目录结构

根目录

这里写图片描述
这里写图片描述

进到conf文件夹里面查看配置文件:

这里写图片描述
这里写图片描述

3.2 配置读写分离信息

代码语言:javascript
复制
#进入配置文件
vi /usr/local/mycat/conf/schema.xml

以下是两种配置方式和配置说明 1. 提供一个数据库内所有表的权限:

这里写图片描述
这里写图片描述

2. 只显示一个数据库的指定表:

这里写图片描述
这里写图片描述

这样对于数据库的读写信息就配置完成了;一般刚开始做,先使用第一种方法。

这里写图片描述
这里写图片描述

4.配置Mycat的连接信息(账号密码)

代码语言:javascript
复制
#进入配置文件
vi /usr/local/mycat/conf/server.xml

设置端口和mycat连接信息

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

对于<dataHost>标签,它里面重要的参数列举如下:

balance指的负载均衡类型,目前的取值有4种: 1. balance=”0”, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。 2. balance=”1”,全部的readHost与stand bywriteHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。 3. balance=”2”,所有读操作都随机的在writeHost、readhost上分发。 4. balance=”3”,所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力 注意:balance=3只在1.4及其以后版本有,1.3没有。


writeType属性: 1.writeType=”0”,所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties. 2.writeType=”1”,所有写操作都随机地发送到配置的writeHost,1.5以后废弃不推荐。


switchType指的是切换的模式,目前的取值也有4种: 1. switchType=’-1’ 表示不自动切换 2. switchType=’1’ 默认值,表示自动切换 3. switchType=’2’ 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status 4. switchType=’3’基于MySQLgalary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like ‘wsrep%’。


注意:估计Mycat1.4才开始支持switchType。1.3版本配置该属性的话,日志里会报错:org.xml.sax.SAXParseException;lineNumber: 61; columnNumber: 86; Attribute “switchType” must bedeclared for element type “dataHost”。 MyCAT心跳检查询句配置为 show slave status ,dataHost 上定义两个新属性: switchType=”2” 与slaveThreshold=”100”,此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制,Mycat心跳机制通过检测 show slave status 中的 “Seconds_Behind_Master”,”Slave_IO_Running”,”Slave_SQL_Running”三个字段来确定当前主从同步的状态及Seconds_Behind_Master主从复制时延,当Seconds_Behind_Master>slaveThreshold时,读写分离筛选器会过滤掉此Slave机器,防止读到很久以前的旧数据,当主节点宕机后,切换逻辑会检查Slave上的Seconds_Behind_Master是否为0,为0时则表示主仅同步,可安全切换,否则不会切换。


Mycat的配置到这里就算完成了,现在我们重启Mycat并连接测试

代码语言:javascript
复制
#切换路径
cd /usr/local/mycat/bin
#重启
./mycat restart

测试连接:

这里写图片描述
这里写图片描述

项目开发中,我们只需要将mysql的连接地址换成mycat的地址即可,无需任何其余操作,更不会造成多余的业务逻辑,好了,mycat的简单配置和使用就介绍到这里了!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/182544.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.读写分离的思路
    • 1.1 原理
      • 1.2 实现方式
      • 2.Mycat安装和配置
        • 2.1安装步骤
        • 3.配置Mycat的读写分离
          • 3.1 Mycat的目录结构
            • 3.2 配置读写分离信息
            • 4.配置Mycat的连接信息(账号密码)
            相关产品与服务
            云数据库 SQL Server
            腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档