基于mycat实现mysql的读写分离
需要具备以下环境
1 mysql主从复制
2 jdk安装以及环境变量配置
请参考 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
修改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!如果出现无法连接的现象,记得关闭防火墙!
如有问题,欢迎交流