Mycat实现Mysql双主和读写分离

目录

1 机器准备

2.  安装服务

2.1 mysql的双主部署

2.2 mycat的安装

3 验证读写分离

3.1 验证写操作

3.2 验证读操作

3.3 故障演练


   

上一篇博客我们讲到mycat实现mysql主从复制和读写分离,但是上一篇讲到有一个小问题,就是当主从切换后,不管是一主几从,切换后,虽然可以插入数据,但是再通过mycat去获取数据时发现当恢复主的时候,负载的时候就会获取到主上面的数据,这时候主上数据和从上的数据不一致了。下面对于这个问题,我们来看看双主的情况。上一篇博客

1 机器准备

机器名 ip 角色
wyl01 192.168.52.128 mycat,mysql客户端
wyl02 192.168.52.129 master
wyl03 192.168.52.130 master

设计思路:部署2个数据库服务,分别存放在192.168.52.129 和192.168.52.130 ,这里数据库采用的mysql-5.7.20版本,mycat为mycat-1.6版本。

2.  安装服务

2.1 mysql的双主部署

mysql的双主前面有介绍过,包括手动部署和ansible部署。这里我们直接执行ansible的playbook剧本即可。

Mycat实现Mysql双主和读写分离_第1张图片Mycat实现Mysql双主和读写分离_第2张图片

Mycat实现Mysql双主和读写分离_第3张图片

Mycat实现Mysql双主和读写分离_第4张图片

看到上面的4个yes状态即表示双主集群搭建成功。

2.2 mycat的安装

mycat的安装可以看上一篇博客,这里给出两个配置文件的内容

server.xml


		123456
		TESTDB
	
 
	
		user
		TESTDB
		false
	

schema.xml





         

        

        
                show slave status
                
                        
                
                
                        
                
        


3 验证读写分离

3.1 验证写操作

这里我们直接看结果,具体的操作上一篇博客有介绍。在wyl01的mycat的入口,插入几条数据,是从wyl02上插入的。

Mycat实现Mysql双主和读写分离_第5张图片

3.2 验证读操作

这里由于wyl02和wyl03是做了双向主从复制(双主),按照上一篇博客,去修改wyl03数据库中的值,再去查看是不可取的。因为wyl03上去修改了,wyl02上也会修改,取得的数据是看不出来来自哪个数据库的,不过我们可以看日志的信息

Mycat实现Mysql双主和读写分离_第6张图片

根据schema.xml中的配置我们也可以知道,获取数据是负载的,两个节点都会去获取。

3.3 故障演练

停掉wyl02上的mysql服务,然后进行插入数据

Mycat实现Mysql双主和读写分离_第7张图片

到这里,和上一篇博客讲到的都是一样的,也是可以插入数据的,那么当我们再把wyl02上数据库服务给恢复,数据是否还是保持一致的。启动wyl02上的mysql服务,进行查看发现数据还是一样的。

Mycat实现Mysql双主和读写分离_第8张图片

我们看到wyl02上也有这一条数据,这样就保证了当主挂了,后续即使有数据写入,我们恢复挂的mysql服务,也不会导致数据的不一致。

Mycat实现Mysql双主和读写分离_第9张图片

 

你可能感兴趣的:(MySQL)