Mycat入门(一)介绍与配置安装

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/muyi_amen/article/details/79818993

MyCat简介

MyCat是一个开源数据库分布式中间件。MyCat是基于阿里Cobar基础之上扩展而来。
Mycat用来解决数据量比较大的数据库效率低下的问题。比如,一头牛拉100公斤的货物能以最高的速度飞驰,并且拉的距离也比较远。但是拉1000公斤的货物就比较慢,拉的距离也比较短;但是,如果将1000公斤货物分10头牛拉,则可以拉的快、多、远。同理,一个数据库数据量过大之后,会导致数据库的性能低下,这时,将数据库的数据分到多个数据库中,类似10头牛拉1000公斤货物。负载均衡了,效率自然高一些。 这就是mycat进行分库分表的效果和作用。本章节简单介绍mycat的安装和配置。

## MyCat配置和安装(Windows版本)
### 1、下载
http://dl.mycat.io/1.6-RELEASE/

MyCat的错误可以在安装目录下的logs文件夹下的wrapper.log中分析。

### 2、准备

允许mysql远程连接:
1、修改mysql库中的user表,给root用户新增一个host字段为%。(待定,直接做第二步)。

2、执行远程授权命令:GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘youpassword’ WITH GRANT OPTION

在数据库服务器A和数据库服务器B上安装MySQL数据库。然后,在A和B上分别创建db1,和表tb1。

### 3、MyCat系统参数配置(server.xml)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
   <system>
        ...
        <!--SQL的解析方式,druid是阿里的一个数据库框架-->
      <property name="defaultSqlParser">druidparser</property>
        ...
    </system> 

    <!--重点:配置用户名和密码-->
    <user name="root">
            <property name="password">123456</property>
            <!--当前用户对应的逻辑数据库-->
            <property name="schemas">TESTDB</property>

            <!-- 表级 DML 权限设置 -->
            <!--        
            <privileges check="false">
                <schema name="TESTDB" dml="0110" >
                    <table name="tb01" dml="0000"></table>
                    <table name="tb02" dml="1111"></table>
                </schema>
            </privileges>       
             -->
    </user>

</mycat:server>

4、MyCat的逻辑库配置(schema.xml)

在schema.xml文件中配置逻辑库和表分片规则。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schema  xmlns:mycat="http://org.opencloudb/">
  <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
      <table name="t_user" dataNode="dn1,dn2" rule="sharding-by-mod2"/>
      <table name="ht_jy_login_log" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-date_jylog"/>
  </schema>
  <dataNode name="dn1" dataHost="localhost1" database="mycat_node1"/>
  <dataNode name="dn2" dataHost="localhost1" database="mycat_node2"/>

  <dataHost name="localhost1" writeType="0" switchType="1" slaveThreshold="100" balance="1" dbType="mysql" maxCon="10" minCon="1" dbDriver="native">
    <heartbeat>show status like 'wsrep%'</heartbeat>
    <writeHost host="hostM1" url="127.0.0.1:3306" user="root" password="root" >
    </writeHost>  
  </dataHost>
</mycat:schema >

配置说明:

table 标签 是逻辑表的配置

name代表表名,

dataNode代表表对应的分片,

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

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

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

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

5、分片规则(rule.xml)

分片规则是非常重要的配置,其决定了数据库切分后的性能好坏。

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

<mycat:rule  xmlns:mycat="http://org.opencloudb/">
  <tableRule name="sharding-by-hour">
    <rule>
      <columns>createTime</columns>
      <algorithm>sharding-by-hour</algorithm>
    </rule>
  </tableRule>

  <function name="sharding-by-hour" class="org.opencloudb.route.function.LatestMonthPartion">
    <property name="splitOneDay">24</property>
  </function>

</mycat:rule >

name 为schema.xml 中table 标签中对应的 rule=”sharding-by-hour” ,也就是配置表的分片规则,

columns 是表的切分字段: createTime 创建日期。

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

function 配置是分片规则的配置。

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

class 是切分规则对应的切分类,写死,需要哪种规则则配置哪种,例如本例子是按小时分片:org.opencloudb.route.function.LatestMonthPartion

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

6、启动MyCat

进入mycat的安装目录的bin目录下(或者配置环境变量),以管理员身份打开CMD命令。

1、安装 mycat.bat install

2、启动 mycat.bat start

3、停止 mycat.bat stop

链接:
mysql -u用户名 -p密码 -P8066 -h127.0.0.1

MyCat的链接方式和MySQL一模一样。默认端口是8066。

猜你喜欢

转载自blog.csdn.net/muyi_amen/article/details/79818993