读写分离

mycat读写分离与主从切换

分表:在台服务器上,优点是易维护,类似表分区,缺点是在一台db服务器上,无法分担IO、负载集中。 分库:在多台服务器上,优点是分担IO、负载均衡,缺点是较不易维护、数据统计以及jion操作有些难度。
数据库切分的目的是为了分担IO、负载均衡,分表无法达到最佳的要求,所以无法成为主流。
在一台服务器,主3317端口,从3327端口。 主库备库上,添加复制帐号:
GRANT REPLICATION SLAVE ON . TO ‘repl’@’10.254.%’ IDENTIFIED BY ‘mycatms’
在备库上3327端口上设置复制:
主库:3317端口
这里写图片描述
这里写图片描述
从库:3327端口
这里写图片描述
这里写图片描述
数据同步测试:
这里写图片描述
这里写图片描述
配置schema.xml:
然后修改mycat的schema.xml:
alance为1:让全部的readHost及备用的writeHost参与select的负载均衡。
witchType为2:基于MySQL主从同步的状态决定是否切换。
heartbeat:主从切换的心跳语句必须为show slave status。
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
alance为1:让全部的readHost及备用的writeHost参与select的负载均衡。
witchType为2:基于MySQL主从同步的状态决定是否切换。
heartbeat:主从切换的心跳语句必须为show slave status。
这里写图片描述
这里写图片描述
有配置读节点:
这里写图片描述
这里写图片描述
在mycat窗口上执行select操作:
后台日志显示出只在3327上执行:
这里写图片描述
这里写图片描述
Mycat窗口写操作:
这里写图片描述
这里写图片描述
后台log显示写操作在3317上:
这里写图片描述
这里写图片描述
Check下主从数据是否都已经写入了:
主库3317端口:
这里写图片描述
这里写图片描述
从裤3327端口:
这里写图片描述
这里写图片描述
关闭主库
这里写图片描述
这里写图片描述
Mycat后台报错:
看到主从失效,因为主down了。
因为我们通过mycat配置了主从切换模式,现在3317端口主库down了,那么写库应该自动切换到从裤3327上面,如果在mycat上面写入,就应该写到3327端口的从库了,验证如下:
(1)在mycat窗口录入数据:
这里写图片描述
这里写图片描述
(2)在3327端口从裤验证数据:
这里写图片描述
这里写图片描述
看到3327端口的数据有新录入的4,meituan的数据。表明验证成功。
(3) dnindex属性文件中writeHost已经变成了第二个了,如下所示:
这里写图片描述
这里写图片描述
这个时候就会报错,主从连接失败,原因是从库3327会再重新从主库3317同步所有的数据,但是从库已经有了,所以就会报错,如下所示:
这里写图片描述
这里写图片描述
我采用
一个个忽略过后,就正常了,没有报错:
这里写图片描述
这里写图片描述
但是这个时候如果再在mycat窗口上录入数据,debug分析面,还是会写入到3327里面去:
这里写图片描述
这里写图片描述
后台debug日志:
这里写图片描述
这里写图片描述
OK,至此,mycat主从切换成功。
原文地址:https://www.cnblogs.com/duanxz/p/4796772.html