`
maosheng
  • 浏览: 568275 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mycat 介绍与安装

阅读更多
一、Mycat简介

        MYCAT基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得MYCAT一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远。业界优秀的开源项目和创新思路被广泛融入到MYCAT的基因中,使得MYCAT在很多方面都领先于目前其他一些同类的开源项目,甚至超越某些商业产品。

        MYCAT对cobar的代码进行了彻底的重构,使用NIO重构了网络模块,并且优化了Buffer内核,增强了聚合,Join等基本特性,同时兼容绝大多数数据库成为通用的数据库中间件。

       MYCAT背后有一支强大的技术团队,其参与者都是5年以上资深软件工程师、架构师、DBA等,优秀的技术团队保证了MYCAT的产品质量。

       MYCAT并不依托于任何一个商业公司,因此不像某些开源项目,将一些重要的特性封闭在其商业产品中,使得开源项目成了一个摆设。


二、Mycat原理






三、Mycat解决问题

1.性能问题





2.数据库连接过多问题








四、Mycat架构









五、Mycat高可用





六、环境介绍

操作系统版本:Redhat 7.0

数据库版本:Mysql-5.6.24

Mycat版本:Mycat-server-1.5.1


Mysql 节点1:

       数据库名:db1

       hostname:server1

       ip:10.138.157.108


Mysql节点2;

       数据库名:db2

       hostname:server2

       ip:10.138.157.109

Mysql节点3;

       数据库名:db3

       hostname:server3

       ip:10.138.157.110

Mysql节点4;

       数据库名:db4

       hostname:server4

       ip:10.138.157.111

Mysql节点5;

       数据库名:db5

       hostname:server5

       ip:10.138.157.112

Mycat安装环境:

       hostname:server0
       ip:10.138.157.113


七、Mycat安装

1、下载

https://github.com/MyCATApache/Mycat-download

2.解包

# tar -zvxf Mycat-server-1.5.1-RELEASE-20160602230303-linux.tar.gz

3.切换目录

# cd mycat

4.配置

MyCAT目前通过配置文件的方式来定义逻辑库和相关配置,主要是包括三个文件:

MYCAT_HOME/conf/server.xml中定义用户以及系统相关变量,如端口等。
MYCAT_HOME/conf/schema.xml中定义逻辑库,表、分片节点等内容。
MYCAT_HOME/conf/rule.xml中定义分片规则。

# cd conf

(1)逻辑库、系统参数配置:

server.xml里面配置MyCAT的逻辑库参数,如示例,配置的就是逻辑库mycat的登录用户名(mycat)和密码(mycat)。

# vi server.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
    <system>
        <property name="defaultSqlParser">druidparser</property>
        <property name="charset">utf8</property>
    </system>
    <user name="mycat">
       <property name="password">mycat</property>
       <property name="schemas">mycat</property>
    </user>
</mycat:server>

(2)逻辑库、表分片配置:

# vi schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
    <!-- schema name=mycat,同server.xml中<property name="schemas">mycat</property>  一样  -->
    <schema name="mycat" checkSQLschema="false" sqlMaxLimit="100">
    <!-- 需要分片的表company,在节点dn1,dn2,dn3,dn4,dn5上分片,分片规则是:mod-long -->
         <table name="company" primaryKey="company_id" dataNode="dn1,dn2,dn3,dn4,dn5" rule="mod-long"/>
    </schema>

    <!-- 数据节点 dn1,对应的主机 sever1,对应的数据库 db1,其他同理-->
    <dataNode name="dn1" dataHost="server1" database="db1" />
    <dataNode name="dn2" dataHost="server2" database="db2" />
    <dataNode name="dn3" dataHost="server3" database="db3" />
    <dataNode name="dn4" dataHost="server4" database="db4" />
    <dataNode name="dn5" dataHost="server5" database="db5" />
  
    <!-- 主机 server1, db1 数据库登录用户名(root)和密码(mysql) -->
    <dataHost name="server1" maxCon="1000" minCon="10" balance="0"
        writeType="0" dbType="mysql" dbDriver="native">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM1" url="server1:3306" user="root"
            password="mysql">
        </writeHost>
    </dataHost>
    <!-- 主机 server2, db2 数据库登录用户名(root)和密码(mysql) -->
    <dataHost name="server2" maxCon="1000" minCon="10" balance="0"
        writeType="0" dbType="mysql" dbDriver="native">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM2" url="server2:3306" user="root"
            password="mysql">
        </writeHost>
    </dataHost>
    <!-- 主机 server3, db3 数据库登录用户名(root)和密码(mysql) -->
    <dataHost name="server3" maxCon="1000" minCon="10" balance="0"
        writeType="0" dbType="mysql" dbDriver="native">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM3" url="server3:3306" user="root"
            password="mysql">
        </writeHost>
    </dataHost>
    <!-- 主机 server4, db4 数据库登录用户名(root)和密码(mysql) -->
    <dataHost name="server4" maxCon="1000" minCon="10" balance="0"
        writeType="0" dbType="mysql" dbDriver="native">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM4" url="server4:3306" user="root"
            password="mysql">
        </writeHost>
    </dataHost>
    <!-- 主机 server5, db5 数据库登录用户名(root)和密码(mysql) -->
    <dataHost name="server5" maxCon="1000" minCon="10" balance="0"
        writeType="0" dbType="mysql" dbDriver="native">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM5" url="server5:3306" user="root"
            password="mysql">
        </writeHost>
    </dataHost>
</mycat:schema>

说明:

    逻辑表配置(schema)

      <table name="company" primaryKey="company_id" dataNode="dn1,dn2,dn3,dn4,dn5" rule="mod-long"/>

      table 标签 是逻辑表的配置 其中

      name代表表名,

      dataNode代表表对应的分片,

      Mycat默认采用分库方式,也就是一个表映射到不同的库上,

      rule代表表要采用的数据切分方式,名称对应到rule.xml中的对应配置,如果要分片必须配置。

    配置分片(dataNode)

      <dataNode name="dn1" dataHost="server1" database="db1" />
      <dataNode name="dn2" dataHost="server2" database="db2" />
      <dataNode name="dn3" dataHost="server3" database="db3" />
      <dataNode name="dn4" dataHost="server4" database="db4" />
      <dataNode name="dn5" dataHost="server5" database="db5" />

      表切分后需要配置映射到哪几个数据库中,Mycat的分片实际上就是库的别名,例如上面例子配置了两个分片dn1,dn2 分别对应到物理机映射dataHost server1,server2 的库上db1,db2。

    配置物理库分片映射(dataHost)

      <dataHost name="server1" maxCon="1000" minCon="10" balance="0"
        writeType="0" dbType="mysql" dbDriver="native">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM1" url="server1:3306" user="root"
            password="mysql">
        </writeHost>
      </dataHost>

      Mycat作为数据库代理需要逻辑库,逻辑用户,表切分后需要配置分片,分片也就需要映射到真实的物理主机上,至于是映射到一台还是一台的多个实例上,Mycat并不关心,只需要配置好映射即可,例如例子中:

      配置了一个名为localhost1的物理主机(dataHost)映射。

      heartbeat 标签代表Mycat需要对物理库心跳检测的语句,正常情况下生产案例可能配置主从,或者多写 或者单库,无论哪种情况Mycat都需要维持到数据库的数据源连接,因此需要定时检查后端连接可以性,心跳语句就是来作为心跳检测。

      writeHost 此标签代表 一个逻辑主机(dataHost)对应的后端的物理主机映射,例如例子中写库hostM1 映射到server1:3306。如果后端需要做读写分离或者多写 或者主从则通过配置 多个writeHost 或者readHost即可。

      dataHost 标签中的 writeType balance 等标签则是不同的策略。

      负载均衡类型:

          balance="0" ,不开启读写分离机制,所有读操作都发送到当前可用的writeHost上

          balance="1" ,全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡

          balance="2" ,所有读操作都随机的在writeHost、readHost上分发

          balance="3" ,所有读请求随机的分发到writeHost对应的readHost执行,writeHost不负担读压力,只在1.4及其以后的版本支持


(3)表切分规则配置:

# vi rule.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://org.opencloudb/">

   <tableRule name="mod-long">
      <rule>
           <columns>company_id</columns>
           <algorithm>mod-long</algorithm>
      </rule>
   </tableRule>

   <function name="mod-long" class="org.opencloudb.route.function.PartitionByMod">
       <!-- how many data nodes -->
       <property name="count">5</property>
   </function>

</mycat:rule>

说明:

tableRule

    name 为schema.xml 中table 标签中对应的 rule="mod-long" ,也就是配置表的分片规则,

    columns 是表的切分字段: company_id 公司ID。

    algorithm 是规则对应的切分规则:映射到function 的name。

function

    name 为切分规则的名称,名字人员取,但是需要与tableRule 中匹配。

    class 是切分规则对应的切分类,写死,需要那种规则则配置那种,例如本例子是按取模分片:org.opencloudb.route.function.PartitionByMod

    property 标签是切分规则对应的不同属性,不同的切分规则配置不同。


5.启动

# cd bin

# ./mycat start


注意,Mycat 默认数据端口为8066,管理端口为9066


提示:访问MyCAT的逻辑库(schema)、用户账号和授权信息是在conf/server.xml文件中配置,而MyCAT用来连接后端MySQL库的用户名、密码信息则在conf/schema.xml中,这是两套完全独立的系统。


JDBC连接配置:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://10.138.157.113:8066/mycat    --连接mycat的schema
jdbc.username=mycat                                --连接mycat的用户名
jdbc.password=mycat                                --连接mycat的密码


6.Linux 命令

# ./mycat start 启动

# ./mycat stop 停止

# ./mycat console 前台运行

# ./mycat restart 重启服务

# ./mycat pause 暂停

# ./mycat status 查看启动状态











  • 大小: 174.4 KB
  • 大小: 42.3 KB
  • 大小: 55.4 KB
  • 大小: 64.6 KB
  • 大小: 52.5 KB
  • 大小: 48.9 KB
  • 大小: 203 KB
分享到:
评论

相关推荐

    MyCAT集群安装配置

    下面将详细介绍MyCAT集群安装配置的相关知识点。 MyCAT安装 MyCAT安装主要包括下载软件、安装MyCAT、添加mycat用户和设置密码等步骤。首先,需要从官方网站下载MyCAT的安装程序,例如Mycat-server-1.6-RELEASE-...

    Mycat介绍安装配置参考文档

    Mycat介绍安装配置参考文档

    Mycat-最详细简介安装及使用说明-注意事项

    - Mycat全局主键的介绍。 - 实现全局主键的方法。 综上所述,Mycat是一个功能强大、高度可定制的分布式数据库系统,适合各种规模的应用程序。通过合理配置和使用Mycat,可以显著提高数据库的性能和稳定性,满足高...

    mycat 2介绍和安装使用6-13(图形化界面).docx

    ### MyCat 2.0 介绍及安装使用详解 #### 一、MyCat 简介 MyCat 是一款开放源代码...通过以上步骤,即可完成 MyCat 的安装与基本配置。需要注意的是,在实际部署过程中还需根据具体的业务场景进行更细致的配置和调优。

    mycat安装配置.docx

    以下步骤详细介绍了如何在CentOS 6.5上安装JDK 1.8: 1. **下载JDK** ```bash [root@c7001 ~]# wget http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ``` 下载JDK 1.8...

    Mycat详细安装和配置.pdf

    Mycat 详细安装和配置 ...本文详细介绍了 Mycat 的安装和配置过程,包括安装环境、Mycat 安装、Mycat 配置等内容。通过本文,读者可以快速了解 Mycat 的安装和配置过程,并且可以应用于实际项目中。

    mycat的安装和启动

    Mycat的安装与启动是其部署过程中的基础步骤,本文将详细介绍如何在基于Linux系统的服务器上完成Mycat的安装,并确保其能够正常启动和运行。 #### 二、环境准备 在安装Mycat之前,需要确保目标系统已经满足以下...

    MyCat安装配置及分库分表实验.docx

    【MyCat安装配置及分库...本文详细介绍了MyCat的安装配置和分库分表实验,提供了一套完整的配置示例,有助于读者理解和实践MyCat的相关功能。在实际应用中,需要根据业务需求灵活调整配置,以达到最佳的性能和可用性。

    mycat安装入门(两节点)

    ### MyCat 安装入门(两节点)详细解析 #### 一、环境介绍 本教程主要介绍了如何在两个不同的MySQL节点上配置MyCat,实现分布式数据库管理。具体环境配置如下: - **MySQL节点1** - 操作系统版本: CentOS 6.5 x64...

    centos7下安装mycat

    ### CentOS 7 下安装 Mycat 与配置详解 #### 一、Mycat 简介 Mycat 是一款开源的数据库中间件,它基于 JDBC 实现,能够实现对后端 MySQL 数据库集群的读写分离、分库分表等功能。通过 Mycat 可以有效地提高 MySQL ...

    mycat 2介绍和安装使用6-12.docx

    #### 六、MyCat 的安装与启动步骤 1. **准备环境**: - 一台 MyCat 服务器(主机名:mycat_h,IP:192.168.10.30) - 一台 MySQL 服务器(主机名:mysal_h,IP:192.168.10.20) 2. **MySQL 服务器配置**: - ...

    mycat安装包

    本文将详细介绍在两种不同操作系统上的安装步骤。 【Linux安装Mycat】 1. **系统准备**:确保你的Linux系统为64位,并且安装了Java运行环境(JDK)。你可以通过`java -version`命令检查Java是否已安装。 2. **...

    linux的Mycat安装包1.6.7.4版本

    本篇文章将详细介绍如何在Linux环境下安装Mycat的1.6.7.4版本。 首先,了解Mycat的基本概念。Mycat是基于Java开发的,它的主要功能包括数据分片、读写分离、故障切换以及SQL路由等。通过数据分片,Mycat可以将大...

    mycat安装教程及使用与详细的配置文件解释与示例

    【标题】"mycat安装教程及使用与详细的配置文件解释与示例"涵盖了关于Mycat数据库中间件的安装步骤、使用方法以及配置文件的详细解读。Mycat是一款开源的分布式数据库系统,用于处理大数据环境下的高并发访问,通过...

    mycat在windows环境下的安装和启动

    下面将详细介绍 Mycat 在 Windows 环境下的安装和启动过程。 首先,安装 Mycat 前需要确保系统已安装 Java 开发工具包(JDK)和 MySQL 数据库。对于 Mycat 1.6 版本,建议使用 1.7 或更高版本的 JDK,同时建议 ...

Global site tag (gtag.js) - Google Analytics