基于mycat实现mysql的读写分离

Posted luyun-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于mycat实现mysql的读写分离相关的知识,希望对你有一定的参考价值。

需要具备以下环境

1 mysql主从复制

2 jdk安装以及环境变量配置

请参考 mysql主从复制

请参考 linux下安装mysql 

以下为我的演示参考:

192.168.142.26 master- mysql  具备主从主从复制条件

192.168.142.25  slave- mysql  具备主从主从复制条件

192.168.142.27  slave- mysql  具备主从主从复制条件

192.168.142.28  mycat   安装了mysql

将压缩包 Mycat-server-1.6.7.3-release-20190828135747-linux.tar.gz 复制到 /usr/local目录下 解压

tar -zvxf Mycat-server-1.6.7.3-release-20190828135747-linux.tar.gz

查看是否安装了jdk 并配置环境变量

jps # 或者 java -version

技术图片

请参考 linux(centOS7)安装jdk配置环境变量

修改myact/conf下的schema.xml 文件如下

技术图片

 

 

    <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
	</schema>
		
	<dataNode name="dn1" dataHost="host1" database="test" />

	<!-- 
	 writeType="1",所有写操作都随机的发送到配置的 writeHost
		3 基于 MySQL galary cluster 的切换机制(适合集群)(1.4.1)
	-->
	<dataHost name="host1" maxCon="1000" minCon="10" balance="3"
			  writeType="1" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<!-- 心跳检查 -->
		<heartbeat>select user()</heartbeat>
		<!-- 写节点的配置 -->
		<writeHost host="hostM1" url="192.168.142.26:3306" user="root"
				   password="123456">
			<!-- 从数据库的地址 以及数据库的账号密码 -->
			<readHost host="hostM2" url="192.168.142.25:3306" user="root" password="123456" />
			<readHost host="hostM3" url="192.168.142.27:3306" user="root" password="123456" />
		</writeHost>
	</dataHost>

  修改myact/conf下的service.xml 文件如下

技术图片

 

 

<user name="test" defaultAccount="true">
		<property name="password">123456</property>
		<!-- 与schema中的名称保持一致 -->
		<property name="schemas">TESTDB</property>
</user>	

 修改myact/conf下的rule.xml 文件如下 

技术图片

 

 

	 <tableRule name="rule1">
                <rule>  
						<!-- 主键 -->
                        <columns>id</columns>
						<!-- 分片规则 -->
                        <algorithm>func1</algorithm>
                </rule>
        </tableRule>

        <function name="func1" class="io.mycat.route.function.PartitionByLong">
				<!-- 分片数量 -->
                <property name="partitionCount">8</property>
				<!-- 分片最大长度 -->
                <property name="partitionLength">128</property>
        </function>

修改mycat下的log4j2.xml 

 <asyncRoot level="debug" includeLocation="true">

 

启动myacat 

cd /usr/local/mycat/bin
./mycat start #启动mycat
./mycat status #查看启动状态

 技术图片

 

 登录mycat

mysql -h 192.168.142.28 -P8066  -u test -p

 

use TESTDB;
create table user(id int primary key,name varchar(100));
insert into user(id,name) values(1,‘xiaoming‘);
select @@hostname; select * from test.user; 

 查看日志

192.168.142.26 只有写节点进行了写操作技术图片

 

 192.168.142.25  192.168.142.27 读节点进行读取数据

技术图片

 

 简单的mycat环境搭建ok!如果出现无法连接的现象,记得关闭防火墙!

 

如有问题,欢迎交流

 

 

 

 

 

 

以上是关于基于mycat实现mysql的读写分离的主要内容,如果未能解决你的问题,请参考以下文章

基于MYCAT中间件实现MYSQL读写分离

基于Mycat实现的mysql的读写分离

基于Mycat中间件的MySQL读写分离

linux下mysql基于mycat做主从复制和读写分离之基础篇

基于mycat实现mysql的读写分离

Linux下mysql基于MyCat实现主从复制和读写分离