Mycat mysql数据库读写分离

Mycat mysql数据库读写分离


Mycat 基本概念


Mycat 介绍

提示:Mycat 官方 http://www.mycat.io/请添加图片描述

Mycat 是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的 Proxy Server,前端客户端可以把它 看作是一个 DB Proxy,用应用程序接口对其进行访问,其后端可以用 MySQL 原生协议与多个 MySQL 服 务器通信,也可以用 JDBC 协议与大多数主流数据服务器通信,其核心功能是分库分表,即将一个大表水 平分割为 N 个小表,存储在后端 MySQL 服务器上或其它数据库里,对数据进行分片处理后,从原有的一 个库,被切分为多个分片数据库,所有的分片数据库集群架构组成了一个完整的数据库存储系统。

Mycat使用mysql的通讯协议模拟成一个mysql服务器,并建立了完整的Schema(数据库),Table(数 据表),User(用户)的逻辑模型,并将这套逻辑模型映射到后端的存储节点上的真实物理库中,这样一 来,所有能使用MySQL客户端以及编程语言都能将Mycat当成是MySQLserver来使用。。


一、安装

关闭 防火墙

systemctl stop firewalld 
systemctl disable firewalld

Mycat下载包,提前安装 java jdk:

查看java环境是否安装好!
	java -version
wget http://dl.mycat.org.cn/1.6.7.6/20220518163531/Mycat-server-1.6.7.6-release-20220518222606-linux.tar.gz
1.解压mycat到/opt
tar zxf Mycat-server-1.6.7.6-release-20220518222606-linux.tar.gz  -C /opt/

设置环境变量
vim /etc/profile

添加环境变量:
export MYCAT_HOME=/opt/mycat
export PATH=$PATH:$MYCAT_HOME/bin

刷新环境变量:
source /etc/profile

请添加图片描述


修改配置文件:

vim  /usr/mycat/conf/server.xml          //用户账户与授权信息

虚拟用户 admin 密码 Abc123456 有权去使用 test逻辑库(必须存在)

请添加图片描述
然后注释掉 下面的 user

vim  /usr/mycat/conf/schema.xml

来到第6行,在这里输入27dd,删除27行。因为不需要进行分片等操作所以删除。

0= 不开启读写分离
1=保留一个写节点
2=所有写节点都要额外去承担读请求
3=读就读写就是写

注意 如果是分片! 复制全部 如果没有分片 去掉红色的
这个代码 不能调颜色,我截屏你看清楚哦

请添加图片描述

请添加图片描述

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--数据库表-->
	<schema name="test" checkSQLschema="false" sqlMaxLimit="100">
	<table name="test1" dataNode="dn1,dn2" rule="mod-long" />
	</schema>
	<dataNode name="dn1" dataHost="pxc1" database="test" />
	<dataNode name="dn2" dataHost="pxc2" database="test" />
<!--连接信息-->
	<dataHost name="pxc1" maxCon="1000" minCon="10" balance="2"
	writeType="1" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
<!--读写节点配置-->
		<writeHost host="w1" url="192.168.10.151:3306" user="admin"
				   password="Abc_123456">
		<readHost host="w1r1" url="192.168.10.152:3306" user="admin" password="Abc_123456" />
		<readHost host="w1r2" url="192.168.10.153:3306" user="admin" password="Abc_123456" />
		</writeHost>
<!--冗余-->
		<writeHost host="w2" url="192.168.10.152:3306" user="admin"
                                   password="Abc_123456">
                <readHost host="w2r1" url="192.168.10.152:3306" user="admin" password="Abc_123456" />
                <readHost host="w2r2" url="192.168.10.151:3306" user="admin" password="Abc_123456" />
		</writeHost>
	</dataHost>
	<dataHost name="pxc2" maxCon="1000" minCon="10" balance="2"
        writeType="1" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
<!--读写节点配置-->
                <writeHost host="w1" url="192.168.10.121:3306" user="admin"
                                   password="Abc_123456">
                <readHost host="w1r1" url="192.168.10.122:3306" user="admin" password="Abc_123456" />
                <readHost host="w1r2" url="192.168.10.123:3306" user="admin" password="Abc_123456" />
                </writeHost>
<!--冗余-->
                <writeHost host="w2" url="192.168.10.122:3306" user="admin"
                                   password="Abc_123456">
                <readHost host="w2r1" url="192.168.10.121:3306" user="admin" password="Abc_123456" />
                <readHost host="w2r2" url="192.168.10.123:3306" user="admin" password="Abc_123456" />
                </writeHost>
        </dataHost>
</mycat:schema>

然后 修改 rule.xml 文件请添加图片描述
如果是阿里云 需要开放 8066和9066端口:

关闭SeLinux不然启动失败

配置权限
请添加图片描述
启动Mycat服务:

mycat start	
或者

请添加图片描述

客户端登陆连接Mycat的8066端口实现读写分离

mysql -h192.168.10.131 -uadmin -pAbc_123456  -P8066

现在在Mycat上再打开一个终端连接9066端口,来验证读写分离
客户端会想mycat中tb1表分别插入数据和select数据,看写是否在master,读是否在slave上。
Mycat:

mysql -h192.168.10.131 -uadmin -pAbc_123456  -P9066

执行以下命令:

show @@datasource;

请添加图片描述

8066连接端口, 9066管理端口
主要是看:READ_LOAD(读负荷)与WRITE_LOAD(写负荷)

如果读写分离成功的话,写将会在master的写负荷上+1,读会再从的读负荷上+1
客户端插入和读取数据:
请添加图片描述
再Mycat的管理端口查看是否+1
请添加图片描述
ok 到这里就完成了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值