Mycat 使用记录(一)分库分表
MySQL5.7.21 配置主从复制
前两篇文章分别讲解了分库分表 和主从配置
下面来介绍 分库分表+读写分离(基于主从配置)
简单的架构图:
配置:
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`;
我们可以看到 查询的时候 走的是我们定义的readHost中的节点
如此 大功告成!!!