Mycat实战

目录

配置详解

server.xml

schemal.xml

rule.xml

 

mycat实战

单库大表拆分

跨库分表

读写分离

第一种方式

第二种方式

 


配置详解

server.xml



    
        0
        1
        1
        0
		
        2
        false
        0
        0
        1
        1m
        1k
        0
        389m
        false
        false
        true
    
	
	
    
        123456
        666888HGfeDuAM9FtWcrsZBGkiga,111222HGfeDuAM9FtWcrsZBGkiga,1112223LR6zbpYi6eLoEFAkXjazH,667128moYWU9vY6aLtcH6EezNWR,667118moYWU9vY6aLtcH6EezNWR,667108BnaL7HrFBqYVsLude4MNVd,667098BnaL7HrFBqYVsLude4MNVd,111222BnaL7HrFBqYVsLude4MNVd,666888NgDLgoKgHPvy56mqDQobu5,111222NgDLgoKgHPvy56mqDQobu5,667078BnaL7HrFBqYVsLude4MNVd,666888BnaL7HrFBqYVsLude4MNVd,6670383LR6zbpYi6eLoEFAkXjazH,6668883LR6zbpYi6eLoEFAkXjazH
    
	
	
	
	
	
	
	
		

schemal.xml





	
	
	
    
		
        
select user()

rule.xml





	
	
	
	
		
			id
			mod-long
		
	


	
		0
		2
		160
		
		
	

	
	
	
	
		
		3
	



 

mycat实战

单库大表拆分

一个逻辑库中的一个逻辑表company对应一个物理库DB中的三个物理表company、company2、company3


		
	
	
		select user()
		
		
		
	 
  

使用的分片规则是mod-long,取模分片;所以在mycat库中插入六条数据,会分配到DB库的三个company表中,select *查询时会到三个库物理表中查询,通过expain查看执行情况:

Mycat实战_第1张图片

如果where条件是id,会路由到相应的company表;如果是name,会路由到三个conpany表查询。

 

跨库分表

相当于一个逻辑库中一个逻辑表对应三个物理库中的物理表

schema.xml

三个物理库,db1、db2、db3,每个库都有record表,配置三个节点,映射到三个物理库的三个物理表。


		
select user()

分片规则也是mod-long取模分片,插入三条数据会分别存入三个库中的record表,实现跨库分片。

读写分离

读写分离是在mysql主从复制的基础上实现的,mysql配置主从同步后,mycat配置主库写数据,从库读数据,实现读写分离。

第一种方式

schema.xml

	
	
	
	
	
	
		select user()
		
		
		
			
	

写数据会写到192.168.22.11数据库上,读数据会从192.168.22.12数据库上请求。但是这种方式,如果hostM1挂了,hostS1也就不起作用了,即读写都不可操作了

第二种方式

还有一种读写分离的配置如下:


	
	
	
	
	
		select user()
		
		
		
	

配置两个writehost节点,这样依然是读写分离,但第一个11节点挂了,mycat的心跳检测,会自动切换可用的12节点上继续执行DML语句。

你可能感兴趣的:(java,【框架】,----------技术类,----------Mycat)