Mycat数据库分库分表中间件 搭建使用

什么是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,数据库的所有的控制都已经搭建完成,有不懂的同学,留言把!!!

猜你喜欢

转载自blog.csdn.net/kaikai136412162/article/details/102828545
今日推荐