MyCat就相当于一个调度器,具有数据库分片功能,本身不存储数据,其功能是对后端的真实数据库的数据,进行数据划分和数据整合,方便管理。
HOW-Mycat-Read&&write separation
现在让我们通过MyCat实现数据库的读写分离
本实验中其他配置文件,参见 MySQL主从复制之Mycat简单配置和高可用 http://www.linuxidc.com/Linux/2017-04/142450.htm
如何安装mysql数据库可以参考: http://www.linuxidc.com/Linux/2016-09/135422.htm如何构建mysql主从环境可以参考:http://www.linuxidc.com/Linux/2016-09/134820.htm
定义读,写节点
vim schema.xml
19 20 rule="sharding-by-intfile" />43 balance="1"44 writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">45
参数说明:
balance=”1″ writeType=”0″ switchType=”1″
balance
1、balance=0 不开启读写分离机制,所有读操作都发送到当前可用的writehostle .
2、balance=1 全部的readhost与stand by writeHost 参与select语句的负载均衡。简单的说,双主双从模式(M1àS1,M2àS2,并且M1和M2互为主备),正常情况下,M1,S1,S2都参与select语句的复杂均衡。
3、balance=2 所有读操作都随机的在readhost和writehost上分发
writeType
负载均衡类型,目前的取值有3种:1、writeType=”0″, 所有写操作发送到配置的第一个writeHost。2、writeType=”1″,所有写操作都随机的发送到配置的writeHost。3、writeType=”2″,不执行写操作。
switchType
1、switchType=-1 表示不自动切换2、switchType=1 默认值,自动切换3、switchType=2 基于MySQL 主从同步的状态决定是否切换
创建只写用户和只读用户
vim server.xml
80
检测
关闭salve的sql_线程
(因为我们要做读写分离,所以数据库的同步,会对实验造成干扰)
mysql>stop slave sql_thread;在客户端登陆mycat:
插入数据:5,mydog,10010
mysql -umycat -pMycat+007 -h172.25.88.33 -P8066
插入之后再读取,也没有看见刚刚插入的id=5
在master(server33)的mysql数据库登陆,db1数据库中查询到了刚刚插入的数据,所以写操作是在master(server33)执行的.
slave(server44)的SQL线程被关闭了,所以slave(server44)的db1也没有id=5的数据
至此读写分离圆满成功。
Ubuntu 16.04.1 安装MyCat http://www.linuxidc.com/Linux/2016-08/134330.htm
MyCAT实现MySQL读写分离实践 http://www.linuxidc.com/Linux/2016-01/127957.htm
MyCAT实现MySQL的读写分离 http://www.linuxidc.com/Linux/2016-01/127555.htm
MyCAT ER分片的验证 http://www.linuxidc.com/Linux/2016-02/128636.htm
MyCat读写分离与主从切换 http://www.linuxidc.com/Linux/2016-09/135424.htm
LVS+Keepalived搭建MyCAT高可用负载均衡集群 http://www.linuxidc.com/Linux/2016-03/129231.htm
Mycat实现数据库读写分离 http://www.linuxidc.com/Linux/2016-07/133518.htm
来源: http://www.linuxidc.com/Linux/2017-04/142453.htm