【mycat】读写分离

在此之前,我们需要安装双主双从的mysql数据库

https://blog.csdn.net/wangyunzhao007/article/details/107330124

还需要安装mycat

一,修该schema.xml配置文件





	
	
	
	
		select user()
		
		
			
			
		
                
                        
                        
        
	

然后重启mycat,即可生效。 

配置文件属性解释

修改的balance属性,通过此属性配置读写分离的类型
 负载均衡类型,目前的取值有4 种:

  1.  balance="0", 不开启读写分离机制, 所有读操作都发送到当前可用的 writeHost 上。
  2.  balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1, M2->S2,并且 M1 与 M2 互为主备),正常情况下, M2,S1,S2 都参与 select 语句的负载均衡。
  3. ( balance="2",所有读操作都随机的在 writeHost、 readhost 上分发。
  4.  balance="3",所有读请求随机的分发到 readhost 执行, writerHost 不负担读压力

写策略:

  1. writeType="0": 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个
  2. writeType="1",所有写操作都随机的发送到配置的 writeHost, 1.5 以后废弃不推荐
  3. writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties 。

数据库主备切换策略 

switchType="1":

  • 1 默认值,自动切换。
  •  -1 表示不自动切换
  •  2 基于 MySQL 主从同步的状态决定是否切换。

配置文件标签解释

Schema:逻辑库,与MySQL中的Database(数据库)对应,一个逻辑库中定义了所包括的Table。 

Table:逻辑表,即物理数据库中存储的某一张表,与传统数据库不同,这里的表格需要声明其所存储的逻辑数据节点DataNode。在此可以指定表的分片规则。 

DataNode:MyCAT的逻辑数据节点,是存放table的具体物理节点,也称之为分片节点,通过DataSource来关联到后端某个具体数据库上 

DataSource:定义某个物理库的访问地址,用于捆绑到Datanode上

 

二、验证读写分离 

在写主机Master1数据库表mytbl(这个表一定要在同步的库中,这样才能让从机去复制数据)中插入带系统变量数据, 造成主从数据不一致

#登录数据库
mysql -uroot -p123456
#使用zhao库,这个一定时要同步的库
use zhao
#插入带系统变量的值
INSERT INTO mytbl VALUES(3,@@hostname);

然后四个库中插入的数据为

【mycat】读写分离_第1张图片

在mycat中链接数据库,通过读写分离的模式,而且选择的负载均衡策略为1,除了第一台写主机之外,都用来读,所以我们使用mycat来操作数据库,能查到zk2,zk4,zk5即可。

然后登陆mycat的数据操作窗口

#130服务器安装了mycat
mysql -umycat -p123456 -h 192.168.157.130 -P8066

切换数据库 

use TESTDB

然后执行sql语句

select * from mytbl;

多执行查询几次,我们就能看到除了第一台读主机(我配置的事130,就是zk2读看不到)之外的所有结果了。

 【mycat】读写分离_第2张图片【mycat】读写分离_第3张图片【mycat】读写分离_第4张图片

 

 

 

你可能感兴趣的:(数据库)