Mycat实现 分库分表+读写分离(基于主从配置)

Mycat 使用记录(一)分库分表
MySQL5.7.21 配置主从复制
前两篇文章分别讲解了分库分表 和主从配置

下面来介绍 分库分表+读写分离(基于主从配置)


简单的架构图:
Mycat实现 分库分表+读写分离(基于主从配置)_第1张图片


配置:

cd进入到mycat的conf目录下 查看 server.xml  rule.xml  schema.xml 三个配置文件

server.xml   与之前的配置基本没有变化




	
	1  
	0  
		2
		0		
		0		
		1
		1m		
		1k
		0		
		384m
		true
	

	
		123456
		m2			
	

	
		user
		m2
		true
	

rule.xml   为了配合测试 新增了根据hash分片规则





	
	 
		 
			order_id
			murmur
		 
		 
	
		
			id
			mod-long
		
	
	 
	    0 
	    2 
	    160 
	
	
		
		2
	
	

schema.xml  新增加了一张order表





	  
      
		
select user() select user()
这里提一点  比较前面分库分表的配置  我们这里改动的配置又以下几点:
1.新增一张按照hash分片的order表
DROP TABLE IF EXISTS `order`;
CREATE TABLE `order` (
  `id` int(11) NOT NULL,
  `order_id` varchar(64) DEFAULT NULL,
  `name` varchar(64) DEFAULT NULL,
  `price` decimal(10,0) DEFAULT NULL,
  `create_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.为了实现分库分表+读写分离  配置了俩个dataHost节点   节点中均有writeHost和readHost节点配置读路径与写路径
3.balance属性改为了3  
负载均衡类型,目前的取值有 3种: 
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",所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost 不负担读压
力,注意balance=3只在1.4及其以后版本有,1.3没有。 
4。switchType属性改为了 -1(自己选择哦)
 -1 表示不自动切换 
1  默认值,自动切换 
2  基于MySQL主从同步的状态决定是否切换 
        心跳语句为 show slave status 
3  基于MySQL galary cluster的切换机制(适合集群)(1.4.1) 
        心跳语句为 show status like ‘wsrep%’. 
到此,mycat配置已经完了   使用cmd进入bin目录  运行startup_nowrap.bat 

测试

首先将conf目录下的log4j2.xml中level级别改为debug 方便查看sql执行的节点
1.使用mavicat连接mycat

2.插入两条数据

INSERT INTO `order`(id,order_id,name,price) VALUES(1,'123abc','木头',13.1)
INSERT INTO `order`(id,order_id,name,price) VALUES(3,'321efd','木头',13.1)

我们查看 debug信息

我们可以看到分库分表是没有问题的 写入的节点都是我们定义好的wirteHost
查询
SELECT * FROM `order`;
Mycat实现 分库分表+读写分离(基于主从配置)_第2张图片

我们可以看到 查询的时候 走的是我们定义的readHost中的节点  
如此  大功告成!!!



你可能感兴趣的:(Mycat实现 分库分表+读写分离(基于主从配置))