什么是MYCAT
- 一个彻底开源的,面向企业应用开发的大数据库集群
- 支持事务、ACID、可以替代MySQL的加强版数据库
- 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
- 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
- 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
- 一个新颖的数据库中间件产品
具体介绍参考官方说明http://www.mycat.io/
搭建配置,首先下载最新版本的mycat http://dl.mycat.io/
服务器安装java环境https://blog.csdn.net/kaikai136412162/article/details/97818500
一、预先配置环境,数据库要搭建一主多从或者多主多从
参考主从配置文章https://blog.csdn.net/kaikai136412162/article/details/102833091
二、下载mycat
wget http://dl.mycat.io/1.6.7.3/20190927161129/Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz
解压
tar zxvf Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz -C /usr/local/
或者
git clone https://gitee.com/kaikai136412162/mycat.git
三、配置server.cnf文件
vim /usr/local/mycat/conf/server.xml
server.xml作用是创建逻辑数据库,设置用户名,密码
更改user标签中的属性内容
四、编辑schema.xml
vim /usr/local/mycat/conf/schema.xml
配置物理数据库,此配置是双主双从
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--配置逻辑数据库-->
<schema name="mycatdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
<!--只做读写分离,不做分库分表,schema标签下全部注释-->
</schema>
<!--作用:dataNode定义的物理数据库-->
<dataNode name="dn1" dataHost="localhost1" database="kaikai" />
<!--定义具体数据库实例,读写分离配置和心跳配置-->
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!--心跳语句-->
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts 配置写数据库-->
<writeHost host="hostM3306" url="localhost:3306" user="root"
password="mysql">
<!-- can have multi read hosts 配置读数据库-->
<readHost host="hostS3307" url="192.168.210.82:3307" user="root" password="mysql" />
<readHost host="hostS3308" url="192.168.210.83:3308" user="root" password="mysql" />
</writeHost>
<!--配置写数据库-->
<writeHost host="hostM3307" url="192.168.210.82:3307" user="root"
password="mysql">
<readHost host="hostS3306" url="localhost:3306" user="root" password="mysql" />
<readHost host="hostS3309" url="192.168.210.84:3309" user="root" password="mysql" />
</writeHost>
<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
</dataHost>
</mycat:schema>
1、配置schema:
配置逻辑数据库,只做读写分离,不做分库分表,则不用配置table,在schema标签上加上属性dataNode,配置dataNode的名字(name)
2、配置dataNode
作用:dataNOde定义了MyCat中的数据节点,也就是数据分片,一个dataNode标签就是一个独立数据分片,一个分片就是一个物理数据库
配置说明:
1.name定义数据节点的名字,这个名字需要是唯一的,这个在schema中使用
2.dataHost 定义分片的那个数据库实例,属性值是引用
3.database 对应真实的数据库名,必须是真实存在的
3、配置dataHost
作用:定义具体的数据库实例,读写分离配置和心跳语句
balance属性
负载均衡类型,取值有4个
1.balance="0", 不开启读写分离机制,所有读操作都发到当前可用的writeHost上
2.balance="1" 全部的readHost与stand by writeHost参与select语句的负载均衡
3.balance="2" 所有读操作都在writeHost readhost上随机发生
4.balance="3"所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力
推荐使用balance设置为1
switchType属性
用于指定主服务器发生故障后的切换类型
-1 表示不自动切换
1.默认值,自动切换 心跳语句 select user()
2.基于MySQL主从同步的状态决定是否切换 心跳语句 show slave status
3.基于MySQL galary cluster的切换机制(适用集群)心跳语句 show status like "wsrep%"
通常情况下 switchType为1即可,比如在双主双从模式下,主从关系很复杂,不能根据MySQL状态来切换,只需在一个主切换到另一个主即可
4、heartbeat标签
用于和后端数据库进行心跳检查的语句
当switchType为1时,心跳检查语句时 select user()
当switchType为2时,心跳检查语句时 show slave status
5、writeHost与readHost标签
作用指定后端数据库的相关配置给mycat,用于实例化数据库链接池
推荐配置
switchType设置为1 表示自动切换主从,heartbeat语句select user()
五、启动mycat
cd /usr/local/mycat/bin
./mycat start
六、查看日志是否正常
cd /usr/local/mycat/logs
more wrapper.log
more mycat.log
七、链接
mysql -u mycat -p -P8066 -h127.0.0.1
ok 操作mycat,即可实现读写分离,自动分配读写操作
Mycat数据库监控平台搭建
1、安装zookeeper并启用zookeeper
#下载解压
wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar -zxvf zookeeper-3.4.14.tar.gz -C /usr/local/
# 更改配置
cd /usr/local/zookeeper-3.4.14/conf
cp zoo_sample.cfg zoo.cfg
#启动zookeeper
cd /usr/local/zookeeper-3.4.14/bin/
./zkServer.sh start
2、安装mycat-eye并启动mycat-eye
#下载解压
wget https://raw.githubusercontent.com/MyCATApache/Mycat-download/master/mycat-web-1.0/Mycat-web-1.0-SNAPSHOT-20160617163048-linux.tar.gz
tar -zxvf Mycat-web-1.0-SNAPSHOT-20160617163048-linux.tar.gz -C /usr/local/
#修改zookeeper地址
cd /usr/local/mycat-web/mycat-web/WEB-INF/classes
vi mycat.properties
zookeeper=127.0.0.1:2181
#启动mycat-eye
cd /usr/local/mycat-web
nohup ./start.sh &
访问监控平台http://127.0.0.1:8082/mycat/
OK,数据库的所有的控制都已经搭建完成,有不懂的同学,留言把!!!