1.Mycat的简介
Mycat是数据库中间件
作用:1,读写分离 2,数据分片(垂直拆分分库,水平拆分分表,垂直拆分+水平拆分)3,多数据源整合
原理:就是拦截 (类似于nginx)
- mycat的安装与启动
- 将mycat的安装包解压到/opt目录下
- 拷贝解压后的mycat文件夹到 /usr/local/目录下
cp -r ./mycat /usr/local
- 修改mycat安装目录下的配置文件
首先进入到安装目录 cd /usr/local/mycat/conf
修改server.xml文件(用户定义以及相关系统变量等)
其次.修改schema.xml文件(定义逻辑库,表,分片节点等内容)
其中 schema标签 name 是表示逻辑库的名字(在server.xml中配置的)
dataNode标签 表示数据节点,在schema表前中,表示默认使用 dataNode=dn1的数据节点
<dataNode>标签就是表示数据节点标签,name属性就是当前数据节点的名字, dataHost表示指向的<dataHost标签>
database对应mysql上的数据库
<dataHost标签> 最重要的balance属性.设置mycat负载论衡类型
<writeHost>表示哪台机器充当写主机
<reatHost>表示哪台机器充当读主机
启动之前验证你的数据库访问情况.看看用户是否有权限访问
mysql -uroot -proot -h 本机ip地址 -P 3306
mysql -uroot -proot -h 虚拟机IP地址 -P 3306
如本机远程访问报错,请建对应用户(给予用户远程连接的权限)
grant all privileges on *.* to root@'缺少的host' identified by '123123';
启动之前mysql数据库中必须有对应在配置文件中写的数据库,如若没有,请启动之前在mysql主机创建对应的数据库
- 启动mycat服务
方式一:控制台启动 :去mycat/bin 目录下 mycat console
方式二:后台启动 :去mycat/bin 目录下 mycat start
看到启动成功就可以了
- 登录到mycat程序
6.可以查看mycat中的数据库(就一个在server.xml中配置的逻辑库)
此时,mycat环境就搭好了(一主一从,)
mycat环境的搭建前提是待搭建好mysql的主从复制
- 读写分离。
要是实现读写分离操作只需要在schema.xml文件中修改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 不负担读压力
怎么查看查询用的是主机还是从机?
在主机数据库中执行 INSERT INTO 表名 VALUES(3,@@hostname);语句
此时在mycat查询表,可以看出mycat的逻辑表TESTDB没有用到读写分离,此时
需要在schema.xml文件的 balance属性值
修该balance的值后重启mycat 就可以看到读写分离的效果了
在mycat下查看表的主机名,就可以验证是否是读写分离了
以上balance值我设置的是2,随机从主机和从机读取数据。