数据库中间件-Mycat(读写分离)
数据库中间件-Mycat
官网 [Mycat简介非常详细]:
http://www.mycat.org.cn/
mycat实现读写分离(一主一从)

准备工作:
1:准备两台主机安装好mysql
2:能够互相ping通或使用mysql命令(mysql -uroot -p123456 -h 192.168.2.100)能够相互访问
3:mycat的读写分离是基于mysql的主从复制,所以需要先搭建mysql 的主从复制,可以参考:
https://www.cnblogs.com/dw3306/p/13943008.html
下载安装:
http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/
解压后即可使用,在conf文件夹下有三个主要配置文件如下:
1:scheme.xml: 定义逻辑库,表,分片节点等内容。
2:rule.xml: 定义分片规则。
3:server.xml: 定义用户以及系统相关变量,如端口等。

编辑scheme.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
<dataNode name="dn1" dataHost="host1" database="dw-study" />
<dataHost name="host1" maxCon="1000" minCon="10" balance="3"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="10.167.19.114:3306" user="root"
password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="10.167.19.115:3306" user="root" password="123456" />
</writeHost>
</dataHost>
</mycat:schema>
关于各个标签的属性介绍请看上面的官方文档链接,解释的很清楚。
配置读写分离需要配置《dataHost》节点下的balance属性,文档上的介绍如下:

修改server.xml
1:修改用户名、密码、mycat逻辑数据库名字


快速启动mycat
cd /bin
# 启动mycat
./mycat start
# 停止mycat
./mycat stop
进入mycat
mysql -umycat -p1234 -h10.167.19.114 -P 8066
-u : server.xml中配置的 user
-p : 密码
-h : mycat所在主机
-P: mycat默认端口
二、双主双从配置
修改 Mycat 的配置文件 schema.xml 修改的balance属性,通过此属性配置读写分离的类型

为了双主双从读写分离balance设置为1
… <dataNode name="dn1" dataHost="host1" database="testdb" /> <dataHost name="host1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100" > <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="192.168.140.128:3306" user="root" password="123123"> <!-- can have multi read hosts --> <readHost host="hostS1" url="192.168.140.127:3306" user="root" password="123123" /> </writeHost>
<writeHost host="hostM2" url="192.168.140.126:3306" user="root" password="123123"> <!-- can have multi read hosts --> <readHost host="hostS2" url="192.168.140.125:3306" user="root" password="123123" /> </writeHost> </dataHost> … #balance="1": 全部的readHost与stand by writeHost参与select语句的负载均衡。 #writeType="0": 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个 #writeType="1",所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐 #writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties 。 #switchType="1": 1 默认值,自动切换。 # -1 表示不自动切换 # 2 基于 MySQL 主从同步的状态决定是否切换。

浙公网安备 33010602011771号