mycat读写分离
一、实现方式
mycat作为一个数据库中间件,它能够实现读写分离。简单地说,它可以将“写数据”和“读数据”分开,分配到不同地数据库。但是,它并不能够做到对数据库进行数据同步,所以mycat地读写分离是依赖于数据库本身地“复制”功能。例如:mysql地“主从复制”或者“双主复制”等。
二、主从复制||双主复制
开启主从复制,或者主主复制
主从复制:http://www.cnblogs.com/lay2017/p/9043985.html
双主复制:http://www.cnblogs.com/lay2017/p/9045557.html
三、配置读写分离
本文基于之前的一篇“mycat分库分表”,地址:http://www.cnblogs.com/lay2017/p/9030709.html
在它的基础上,只需要简单更改配置即可
我们找到schema.xml文件,并更改配置:
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!-- 配置逻辑库 --> <schema name="mycatdb" checkSQLschema="true" sqlMaxLimit="100" dataNode="dataNode1"> </schema> <!-- 配置分片节点 --> <dataNode name="dataNode1" dataHost="dataHost1" database="数据库名" /> <!-- 配置节点主机 --> <dataHost name="dataHost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native"> <!-- 心跳 --> <heartbeat>select user()</heartbeat> <!-- 读写配置 --> <writeHost host="host1" url="写库的IP:3306" user="root" password="root"> <readHost host="hostM1" url="读库的IP:3306" user="root" password="root"> </readHost> </writeHost> </dataHost> </mycat:schema>
writehost配置写库
readhost配置读库
datahost中balance = "1" 表示 将所有的“读”操作发送到readhost上,减轻writehost的负担,以达到读写分离
四,启动测试
使用命令:./mycat start启动mycat
就可以连接并测试数据库了