目录
前提
我们已经对mysql实现了基本的读写分离,一主一从。
https://blog.youkuaiyun.com/Delicious_Life/article/details/106154307
准备Mycat
我们把下载好的Mycat包拖到/haoke/mycat目录下,这里使用的mycat版本是1.6.6.1

cd到压缩包所在目录,执行解压
tar -xvf Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz
解压成功后删除解压包
rm -rf Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz
重命名
mv mycat mycat01
修改mycat配置文件
cd mycat01/conf

先修改server.xml,这个文件进行mycat系统配置,和用户设置。
vim server.xml
我们先删除里面所有内容
编辑系统配置和用户配置,用户名itcast,密码itcast123,用户所使用的逻辑库叫做itcast
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<system>
<property name="nonePasswordLogin">0</property>
<property name="useHandshakeV10">1</property>
<property name="useSqlStat">0</property>
<property name="useGlobleTableCheck">0</property>
<property name="sequnceHandlerType">2</property>
<property name="subqueryRelationshipCheck">false</property>
<property name="processorBufferPoolType">0</property>
<property name="handleDistributedTransactions">0</property>
<property name="useOffHeapForMerge">1</property>
<property name="memoryPageSize">64k</property>
<property name="spillsFileBufferSize">1k</property>
<property name="useStreamOutput">0</property>
<property name="systemReserveMemorySize">384m</property>
<property name="useZKSwitch">false</property>
</system>
<!--这里是设置的itcast用户和虚拟逻辑库-->
<user name="itcast" defaultAccount="true">
<property name="password">itcast123</property>
<property name="schemas">itcast</property>
</user>
</mycat:server>
再修改schema.xml,这个文件用来配置主从关系
vim schema.xml
同样是先删除再新增,根据实际情况修改,注意schema的name是你在server.xml中配置的用户名
table的name是mycat中间件管理的具有同步功能的表名,dataNode中的database是分片数据库的名称。
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--配置数据表-->
<schema name="itcast" checkSQLschema="false" sqlMaxLimit="100">
<table name="tb_ad" dataNode="dn1" rule="mod-long" />
</schema>
<!--配置分片关系-->
<dataNode name="dn1" dataHost="cluster1" database="itcast" />
<!--配置连接信息-->
<dataHost name="cluster1" maxCon="1000" minCon="10" balance="3"
writeType="1" dbType="mysql" dbDriver="native" switchType="1"
slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="W1" url="192.168.62.132:3306" user="root"
password="root">
<readHost host="W1R1" url="192.168.62.132:3307" user="root"
password="root" />
</writeHost>
</dataHost>
</mycat:schema>
mycat负载均衡的规则
上面的配置我们设置负载均衡的规则为3

接下来我们修改rule.xml文件,设置分片规则,也就是取模分片的规则
vim rule.xml
在这个位置,把值改为1

启动mycat
进入bin目录
/haoke/mycat/mycat01/bin
测试mycat是否配置成功
./mycat console
下图代表mycat配置成功

启动mycat,还是在bin目录下
./startup_nowrap.sh
下图代表启动成功

------------------------------------------------
扩展下如何停止mycat,输入命令查看mycat启动端口

通过kill进程号杀死即可~
kill 进程号
------------------------------------------------
连接MyCat
mycat的默认端口号是8066,用户名和密码是刚才咱们在配置文件中配置的itcast和itcast123 。
个人尝试,只有在mycat使用此命令启动时“./mycat console”,navicat才能连接成功,如果navicat连接成功后操作mycat报错,可以尝试重新启动mycat解决问题
连接成功后长这个德行,注意itcast库和tb_ad表是根据你的xml文件中配置规则自动生成的,但是此时tb_ad是个逻辑空表,暂时不能用,如果你没有生成itcast数据库,可以在3360master01中新建一个itcast数据库,重启mycat进行测试

测试基于Mycat中间件的主从复制
在mycat的数据库中进行如下操作
创建表
CREATE TABLE `tb_ad` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`type` int(10) DEFAULT NULL COMMENT '广告类型',
`title` varchar(100) DEFAULT NULL COMMENT '描述',
`url` varchar(200) DEFAULT NULL COMMENT '图片URL地址',
`created` datetime DEFAULT NULL,
`updated` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='广告表';
新增数据
INSERT INTO `tb_ad` (`id`, `type`, `title`, `url`, `created`, `updated`) VALUES ('1','1', 'UniCity万科天空之城', 'http://itcast-haoke.oss-cn-qingdao.aliyuncs.com/images/2018/11/26/15432029097062227.jpg','2018-11-26 11:28:49','2018-11-26 11:28:51');

这回再连接你的master01和slave01,都同时多出来了一个itcast数据库,一张和mycat中tb_ad内容一致的表

回顾自定义读写分离策略
我们的读写分离基于主从复制,主负责写,从负责读
我们之前在schema.xml中配置的,所有读请求都走3307,所有写请求走3306

回顾基于中间件的读写分离策略
现在我们成功做到了通过操纵MyCat操作数据库集群!
本文介绍了如何使用Mycat中间件实现MySQL的主从复制和读写分离。首先,文章阐述了前提条件,即已建立一主一从的MySQL环境。接着详细步骤包括准备Mycat、修改配置文件如server.xml、schema.xml和rule.xml,启动Mycat,并通过连接MyCat进行测试验证。最后,文章回顾了自定义和基于中间件的读写分离策略。
368

被折叠的 条评论
为什么被折叠?



