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主从切换成功。