mycat安装
首先在官网下载mycat,官网地址:http://mycat.org.cn/
下载地址:http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/
上传至centos7中。
解压
tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
mycat软件目录构成:
conf 目录下存放配置文件,server.xml 是Mycat 服务器参数调整和用户授权的配置文 件,schema.xml 是逻辑库定义和表以及分片定义的配置文件,rule.xml 是分片规则的配置文件,分片规则的具体一些参数信息单独存放为文件,也在这个目录下,配置 文件修改,需要重启Mycat 或者通过9066 端口reload。
lib 目录下主要存放mycat 依赖的一些jar 文件。
尝试启动mycat服务
bin/mycat start
查看是否启动成功
已经成功启动。
读写分离配置
schema.xml 中配置逻辑库、数据节点,数据主机:
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 注意:里面的元素一定要按 schema 、dataNode 、 dataHost的顺序配置,name属性值为逻辑库名 -->
<schema name="testdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>
<!--配置数据节点,database为数据节点中的数据库中的真实名字-->
<dataNode name="dn1" dataHost="dhost1" database="testdb" />
<!--配置datahost的信息,连接数据库的配置-->
<dataHost name="dhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!--配置服务器ip和数据库端口,用户名和密码,用于写数据-->
<writeHost host="hostM1" url="192.168.130.128:3306" user="root" password="qwe123">
<!--配置服务器ip和数据库端口,用户名和密码,用于读数据-->
<readHost host="hostS2" url="192.168.130.129:3306" user="root" password="qwe123" />
</writeHost>
</dataHost>
</mycat:schema>
Balance参数设置:
1. balance=“0”, 所有读操作都发送到当前可用的writeHost上。
2. balance=“1”,所有读操作都随机发送到当前的writeHost对应的readHost和备用的writeHost
3. balance=“2”,所有读操作都随机的在writeHost、readhost上分发
4. balance=“3”,所有读请求随机的分发到wiriterHost 对应的readhost 执行
WriteType参数设置:
1. writeType=“0”, 所有写操作都发送到可用的writeHost上。
2. writeType=“1”,所有写操作都随机的发送到readHost。
3. writeType=“2”,所有写操作都随机的在writeHost、readhost分上发。
server.xml配置
修改用户配置,name="schemas"和前面配置的schemas.xml中的name对应
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">testdb</property>
</user>
这里的两个mysql服务我主动停止了主从复制,所以两个数据库中数据不一致。便于我们看到效果。
首先是主数据库(用于写):
ip 192.168.130.128
database testdb
table t_order
从数据库(用于读)
ip 192.168.130.129
database testdb
table t_order
navicate连接
到 conf/server.xml 中查看用户名和密码
mycat默认的服务端口为8066,管理端口为9066
连接成功,Mycat 对我们的应用来说,就是一个数据库!
查看表
可以看到读取到的是从数据库中的记录。
然后手动插入一条数据
查看主数据库,发现数据插入成功
查看从数据库,没有数据增加
查看mycat数据库,同样没有数据增加,因为是读取的从数据库的记录
这就实现了读写分离,当然,实际应用中我们需要开启主从复制哦。