Centos7安装Mycat

本文介绍如何在Centos7环境下安装Mycat,并详细解释了Mycat的工作原理及配置过程。通过配置schema.xml和server.xml文件,实现数据库的读写分离和分库分表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Centos7安装Mycat

使用MyCat需要使用MySQL【点这里
MyCat下载链接:http://dl.mycat.org.cn/
优快云下载

简介

之前研究过MySQL的一个中间件amoeba来做MySQL数据库的读写分离,今天带来一个功能更为强大的中间件——mycat,从定义和分类来看,它是一个开源的分布式数据库系统,但是本身并不存储数据,它是一个实现了MySQL协议的Server,前端用户可以把它看做是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生(Native)协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分库分表(这点amoeba不支持)。说它是MySQL的中间件,其实发展到现在的版本,也不只这么简单了,它可以支持包括MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库和MongoDB等NOSQL数据库。
mycat原理:可以用“拦截”一词形容,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析,如分片分析,路由分析,读写分离分析,缓存分析等,然后将此sql发往后端的真实数据库,并将返回的结果做适当处理,最终返回给用户

1、下载Mycat

下载linux.tar.gz
在这里插入图片描述

2、将压缩包解压

2、1进入目录
cd /
cd /usr/local
2、2解压压缩包
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
rm -rf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

在这里插入图片描述

  • bin:命令文件
  • catlet:空的,扩展
  • conf:配置文件(server.xml,schema.xml,rule.xml等)
  • lib:依赖的jar包

3、使用Mycat

一下命令均在cd /usr/local/mycat/bin
启动命令后台启动

./mycat start

启动命令前台启动

./mycat console

停止命令

./mycat stop

重启命令

./mycat restart

查看状态

./mycat status
3、1修改配置文件 /usr/local/mycat/conf/schema.xml

这里配置mysql的地址、用户名和密码

<?xml version="1.0"?>  
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">  
<mycat:schema xmlns:mycat="http://io.mycat/">  
  
    <!-- TESTDB是mycat数据库,注意名称必须和server.xml中配置的一致 -->  
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">  
        <!-- dn1、dn2、dn3是mysql中的三个数据库节点,分别代替三个不同的数据库。  
             dataNode该属性定义逻辑表所属的数据库,  
             rule属性用于指定逻辑表要使用的规则名字,规则名字在rule.xml中定义。  
        -->  
        <table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />  
        <!--  
        primaryKey属性指定逻辑表对应的主键,  
        type属性定义了逻辑表的类型,目前逻辑表只有“全局表”和”普通表”两种类型,不指定即为普通表  
        -->  
        <table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" />  
        <table name="goods" primaryKey="ID" type="global" dataNode="dn1,dn2" />  
        <!-- autoIncrement指定这个表有使用自增长主键,默认为false -->  
        <table name="hotnews" primaryKey="ID" autoIncrement="true" dataNode="dn1,dn2,dn3"  
               rule="mod-long" />  
        <table name="employee" primaryKey="ID" dataNode="dn1,dn2"  
               rule="sharding-by-intfile" />  
        <table name="customer" primaryKey="ID" dataNode="dn1,dn2"  
               rule="sharding-by-intfile">  
            <childTable name="orders" primaryKey="ID" joinKey="customer_id"  
                        parentKey="id">  
                <childTable name="order_items" joinKey="order_id"  
                            parentKey="id" />  
            </childTable>  
            <childTable name="customer_addr" primaryKey="ID" joinKey="customer_id"  
                        parentKey="id" />  
        </table>  
    </schema>  
  
    <!-- 配置mysql数据库节点,一个dataNode代表一个数据库 -->  
    <dataNode name="dn1" dataHost="127.0.0.1" database="db1" />  
    <dataNode name="dn2" dataHost="127.0.0.1" database="db2" />  
    <dataNode name="dn3" dataHost="127.0.0.1" database="db3" />  
    
    <!-- dataHost用来定义具体的mysql以及读写分离  -->  
    <!--    
    maxCon/maxCon指定最大最小连接数,  
    balance=“0”, 所有读操作都发送到当前可用的writeHost上。  
        balance=“1”,所有读操作都随机的发送到readHost。  
        balance=“2”,所有读操作都随机的在writeHost、readhost上分发。  
    writeType=“0”, 所有写操作都发送到可用的writeHost上。  
        writeType=“1”,所有写操作都随机的发送到readHost。  
        writeType=“2”,所有写操作都随机的在writeHost、readhost分上发。  
    dbType指定数据库类型,支持oracle、mongodb等  
    dbDriver指定连接后端数据库使用的Driver,目前可选的值有native和JDBC。  
    -->  
    <dataHost name="127.0.0.1" maxCon="1000" minCon="10" balance="0"  
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">  
        <!-- heartbeat标签指定后端数据库进行心跳检查的语句。例如,MYSQL可以使用select user(),Oracle可以使用select 1 from dual等-->  
        <heartbeat>select user()</heartbeat>  
        <writeHost host="hostM1" url="127.0.0.1:3306" user="root"  
                   password="root">  
            <!-- <readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" /> -->  
        </writeHost>  
        <!-- <writeHost host="hostS1" url="localhost:3316" user="root"  
                   password="123456" /> -->  
    </dataHost>  
</mycat:schema>  

当使用 JDBC 时则可以这么写:jdbc:mysql://localhost:3306/

3、2 server.xml

这里配置mycat的用户名密码

       <!-- 配置根用户和密码,这里的TESTDB需要和schema.xml配置的名称一致 -->  
<user name="root">  
    <property name="password">123456</property>  
    <property name="schemas">TESTDB</property>  
</user>  
  
<!-- 配置用户和密码,设置权限为只读 -->  
<user name="test">  
    <property name="password">123456</property>  
    <property name="schemas">TESTDB</property>  
    <property name="readOnly">true</property>  
</user> 
3、3修改用户和组

修改mycat目录所属的用户和组为mycat用户

groupadd mycat
adduser -r -g mycat mycat
chown -R mycat.mycat /usr/local/mycat/
3、4修改MySQL配置文件

提示:若是Linux版本的MySQL,则需要设置为MySQL大小写不敏感,否则可能会发生表找不到的问题。
在MySQL的配置文件中/etc/my.cnf [mysqld] 中增加一行

lower_case_table_names=1

4、链接mycat

需要先在MySQL中创建三个数据库,以便来测试链接是否成功。
这里登录用户的账号和密码需要与conf/server.xml文件中的相同。

#-u用户名 -p密码 -P端口9066 -h为ip地址

mysql -uroot -p123456 -h127.0.0.1 -P8066 -DTESTDB 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来.....

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值