下载:

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

安装:

直接解压

运行命令:

linux:   

  ./mycat start 启动 
  ./mycat stop 停止 
  ./mycat console 前台运行 
  ./mycat restart 重启服务 
  ./mycat pause 暂停 
  ./mycat status 查看启动状态

windows:

  点击startup_nowrap.bat

配置:

打开conf/wrapper.conf文件。以下配置跟jvm参数完全一致,可以根据自己的jvm参数调整。

  1. Java Additional Parameters
  2. wrapper.java.additional.1=
  3. wrapper.java.additional.1=-DMYCAT_HOME=.
  4. wrapper.java.additional.2=-server
  5. wrapper.java.additional.3=-XX:MaxPermSize=64M
  6. wrapper.java.additional.4=-XX:+AggressiveOpts
  7. wrapper.java.additional.5=-XX:MaxDirectMemorySize=100m
  8. wrapper.java.additional.6=-Dcom.sun.management.jmxremote
  9. wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984
  10. wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false
  11. wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false
  12. wrapper.java.additional.10=-Xmx100m
  13. wrapper.java.additional.11=-Xms100m
  14. wrapper.java.additional.12=-XX:+UseParNewGC
  15. wrapper.java.additional.13=-XX:+UseConcMarkSweepGC
  16. wrapper.java.additional.14=-XX:+UseCMSCompactAtFullCollection
  17. wrapper.java.additional.15=-XX:CMSFullGCsBeforeCompaction=0
  18. wrapper.java.additional.16=-XX:CMSInitiatingOccupancyFraction=70

Mycat连接测试:
  测试mycat与测试mysql完全一致,mysql怎么连接,mycat就怎么连接。
  推荐先采用命令行测试:
  mysql -uroot -proot -P8066 -h127.0.0.1
  如果采用工具连接,1.4,1.3目前部分工具无法连接,会提示database not selected,建议采用高版本,navicat测试。1.5已经修复了部分工具连接。

Mycat配置入门
配置:
–bin 启动目录
–conf 配置文件存放配置文件
逻辑库配置:
配置server.xml
添加两个mycat逻辑库:user,pay: system 参数是所有的mycat参数配置,比如添加解析器:defaultSqlParser,其他类推 user 是用户参数。

  1. <system>
  2. <property name="defaultSqlParser">druidparser</property>
  3. </system>
  4. <user name="mycat">
  5. <property name="password">mycat</property>
  6. <property name="schemas">user,pay</property>
  7. </user>

编辑schema.xml
  修改dataHost和schema对应的连接信息,user,pay 垂直切分后的配置如下所示:

schema 是实际逻辑库的配置,user,pay分别对应两个逻辑库,多个schema代表多个逻辑库。
dataNode是逻辑库对应的分片,如果配置多个分片只需要多个dataNode即可。
dataHost是实际的物理库配置地址,可以配置多主主从等其他配置,多个dataHost代表分片对应的物理库地址,下面的writeHost、readHost代表该分片是否配置多写,主从,读写分离等高级特性。
以下例子配置了两个writeHost为主从。

  1. <schema name="user" checkSQLschema="false" sqlMaxLimit="100" dataNode="user" />
  2. <schema name="pay" checkSQLschema="false" sqlMaxLimit="100" dataNode="pay" >
  3. <table name="order" dataNode="pay1,pay2" rule="rule1"/>
  4. </schema>
  5. <dataNode name="user" dataHost="host" database="user" />
  6. <dataNode name="pay1" dataHost="host" database="pay1" />
  7. <dataNode name="pay2" dataHost="host" database="pay2" />
  8. <dataHost name="host" maxCon="1000" minCon="10" balance="0"
  9. writeType="0" dbType="mysql" dbDriver="native">
  10. <heartbeat>select 1</heartbeat>
  11. <!-- can have multi write hosts -->
  12. <writeHost host="hostM1" url="192.168.0.2:3306" user="root" password="root" />
  13. <writeHost host="hostM2" url="192.168.0.3:3306" user="root" password="root" />
  14. </dataHost>

  
Mycat逻辑库、系统参数配置
配置Mycat环境参数

  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <!DOCTYPE mycat:server SYSTEM "server.dtd">
  3. <mycat:server xmlns:mycat="http://org.opencloudb/">
  4. <system>
  5. <property name="defaultSqlParser">druidparser</property>
  6. </system>
  7. </mycat:server>

  如例子中配置的所有的Mycat参数变量都是配置在server.xml 文件中,system标签下配置所有的参数,如果需要配置某个变量添加相应的配置即可,例如添加启动端口8066,默认为8066。

<property name="serverPort">8066</property>
1
  
  其他所有变量类似。
  配置Mycat逻辑库与用户

  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <!DOCTYPE mycat:server SYSTEM "server.dtd">
  3. <mycat:server xmlns:mycat="http://org.opencloudb/">
  4. <user name="mycat">
  5. <property name="password">mycat</property>
  6. <property name="schemas">TESTDB</property>
  7. </user>
  8. </mycat:server>

  如例子中配置的所有的Mycat连接的用户与逻辑库映射都是配置在server.xml 文件中,user标签下配置所有的参数,例如例子中配置了一个mycat用户供应用连接到mycat,同时mycat 在schema.xml中配置后了一个逻辑库TESTDB,配置好逻辑库与用户的映射关系。

逻辑库、表分片配置
配置逻辑库(schema)

  Mycat作为一个中间件,实现mysql协议那么对前端应用连接来说就是一个数据库,也就有数据库的配置,mycat的数据库配置是在schema.xml中配置,配置好后映射到server.xml里面的用户就可以了。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
  3. <mycat:schema xmlns:mycat="http://org.opencloudb/">
  4. <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
  5. <table name="t_user" dataNode="dn1,dn2" rule="sharding-by-mod2"/>
  6. <table name="ht_jy_login_log" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-date_jylog"/>
  7. </schema>
  8. <dataNode name="dn1" dataHost="localhost1" database="mycat_node1"/>
  9. <dataNode name="dn2" dataHost="localhost1" database="mycat_node2"/>
  10.  
  11. <dataHost name="localhost1" writeType="0" switchType="1" slaveThreshold="100" balance="1" dbType="mysql" maxCon="10" minCon="1" dbDriver="native">
  12. <heartbeat>show status like 'wsrep%'</heartbeat>
  13. <writeHost host="hostM1" url="127.0.0.1:3306" user="root" password="root" >
  14. </writeHost>
  15. </dataHost>
  16. </mycat:schema >

  上面例子配置了一个逻辑库TESTDB,同时配置了t_user,ht_jy_login_log两个分片表。

逻辑表配置

<table name="t_user" dataNode="dn1,dn2" rule="sharding-by-mod2"/>

  table 标签 是逻辑表的配置 其中
  name代表表名,
  dataNode代表表对应的分片,
  Mycat默认采用分库方式,也就是一个表映射到不同的库上,
  rule代表表要采用的数据切分方式,名称对应到rule.xml中的对应配置,如果要分片必须配置。

配置分片(dataNode)

  1. <dataNode name="dn1" dataHost="localhost1" database="mycat_node1"/>
  2. <dataNode name="dn2" dataHost="localhost1" database="mycat_node2"/>

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

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

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

  Mycat作为数据库代理需要逻辑库,逻辑用户,表切分后需要配置分片,分片也就需要映射到真实的物理主机上,至于是映射到一台还是一台的多个实例上,Mycat并不关心,只需要配置好映射即可,例如例子中:
  配置了一个名为localhost1的物理主机(dataHost)映射。
  heartbeat 标签代表Mycat需要对物理库心跳检测的语句,正常情况下生产案例可能配置主从,或者多写 或者单库,无论哪种情况Mycat都需要维持到数据库的数据源连接,因此需要定时检查后端连接可以性,心跳语句就是来作为心跳检测。
  writeHost 此标签代表 一个逻辑主机(dataHost)对应的后端的物理主机映射,例如例子中写库hostM1 映射到127.0.0.1:3306。如果后端需要做读写分离或者多写 或者主从则通过配置 多个writeHost 或者readHost即可。

Mycat 表切分规则配置
表切分规则

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mycat:rule SYSTEM "rule.dtd">
  3. <mycat:rule xmlns:mycat="http://org.opencloudb/">
  4. <tableRule name="sharding-by-hour">
  5. <rule>
  6. <columns>createTime</columns>
  7. <algorithm>sharding-by-hour</algorithm>
  8. </rule>
  9. </tableRule>
  10.  
  11. <function name="sharding-by-hour" class="org.opencloudb.route.function.LatestMonthPartion">
  12. <property name="splitOneDay">24</property>
  13. </function>
  14.  
  15. </mycat:rule >

  数据切分中作为表切分规则中最重要的配置,表的切分方式决定了数据切分后的性能好坏,因此也是最重要的配置。
  如上面例子配置了一个切分规则,名为sharding-by-hour 对应的切分方式(function )是按日期切分,该配置中:

tableRule

name 为schema.xml 中table 标签中对应的 rule=”sharding-by-hour” ,也就是配置表的分片规则,
columns 是表的切分字段: createTime 创建日期。
algorithm 是规则对应的切分规则:映射到function 的name。

function

function 配置是分片规则的配置。
name 为切分规则的名称,名字人员取,但是需要与tableRule 中匹配。
class 是切分规则对应的切分类,写死,需要哪种规则则配置哪种,例如本例子是按小时分片:org.opencloudb.route.function.LatestMonthPartion
property 标签是切分规则对应的不同属性,不同的切分规则配置不同。

mycat入门安装及demo实现的更多相关文章

  1. MyCat 入门:漫谈 MyCat 配置系统

    文章首发于[博客园-陈树义],点击跳转到原文<MyCat 入门:漫谈 MyCat 配置系统> 上篇文章<MyCat 启蒙:分布式系统的数据库架构演变>中,我们通过一个项目从零到 ...

  2. Mycat入门

    1. Mycat入门 官网 http://www.mycat.io/ 1.1. 什么是Mycat 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 ...

  3. Activity工作流(2)-入门安装运行第一个例子

    转: Activity工作流(2)-入门安装运行第一个例子 置顶 2017年05月24日 15:58:50 li_ch_ch 阅读数:24432   版权声明:本文为博主原创文章,未经博主允许不得转载 ...

  4. mycat的安装及配置文件应用

    table:逻辑一 mycat的安装 1 基于jdk运行 2 获取安装包 3 解压 tar -xf Mycat***.tar.gz 4 测试运行 mycat的根目录中bin保存了mycat的核心命令文 ...

  5. Debian 入门安装与配置2

    Debian 入门安装与配置2 1. C/C++开发必装软件 atp-get install gcc    这个不用说,用来编译C程序 apt-get install g++ 用来编译C++程序 ap ...

  6. Debian 入门安装与配置1

    Debian 入门安装与配置1 最近安装了多个发行版本的Linux,包括Ubuntu.Fedora.Centos和Debian,发现只有Debian在界面和稳定性等综合特性上表现最优,自己也最喜欢,所 ...

  7. Mysql系列五:数据库分库分表中间件mycat的安装和mycat配置详解

    一.mycat的安装 环境准备:准备一台虚拟机192.168.152.128 1. 下载mycat cd /softwarewget http:-linux.tar.gz 2. 解压mycat tar ...

  8. mycat 入门教程

    mycat 入门教程 之前已经对mycat的配置进行了详细记得介绍,下面就是一个mycat分库的小例子 schema.xml配置 <?xml version="1.0"?&g ...

  9. elk系列1之入门安装与基本操作【转】

    preface 我们每天都要查看服务器的日志,一方面是为了开发的同事翻找日志,另一方面是巡检服务器查看日志,而随着服务器数量以及越来越多的业务上线,日志越来越多,人肉运维相当痛苦了,此时,参考现在非常 ...

随机推荐

  1. Codefest 2019 比赛总结

    蒟蒻的心路历程 上来看B,结果不会... 回来做A,写完之后nantf已经切B了. 回来做B,花了13min磕了出来. 继续做C,自闭. 继续做D,花了10min磕了出来. 继续做E,一开始有点自闭, ...

  2. 二分算法题目训练(四)——Robin Hood详解

    codeforces672D——Robin Hood详解 Robin Hood 问题描述(google翻译) 我们都知道罗宾汉令人印象深刻的故事.罗宾汉利用他的射箭技巧和他的智慧从富人那里偷钱,然后把 ...

  3. CodeForces 787 题解

    A题,因为数据范围很小,所以只要暴力即可,如果能相遇一定范围不大,如果范围很大还没相遇一定是不会相遇的了.正解应当是用扩展欧几里得计算这个方程的整数解,再想办法看看有没有正整数解才是. B题,只要看懂 ...

  4. 树莓派安装配置Nginx+PHP7+MariaDB

    原文地址:http://blog.sina.com.cn/s/blog_150f554f50102yhra.html 一.安装 Nginx 和 PHP7 1.安装Nginx sudo apt inst ...

  5. 将页面中所有的checkbox设成单选得

    $(function () { var allBox = $(":checkbox"); allBox.click(function () { allBox.removeAttr( ...

  6. Cubic-bezier 曲线

    cubic-bezier又称三次贝塞尔,主要是为animation生成速度曲线函数. cubic-bezier(x1,y1,x2,y2) 此图中: P0:(0,0) P1:(x1,y1) P2:(x2 ...

  7. M有SQL删除数据库提示Error dropping database (can't rmdir './db_test', errno: 39)

    1.执行ps aux | grep mysql,查看mysql的data目录,比如结果是--datadir=/var/lib/mysql.2.进入data目录,删除以该数据库为名字的文件夹.cd /v ...

  8. iframe窗口嵌套,子窗口跳转重叠在父窗口的问题

    window.top //最顶层窗口 window.self //当前窗口 window.parent //父级窗口 "window.location.href"."lo ...

  9. oracle的表分区

    (1.) 表空间及分区表的概念 表空间: 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间.   分区表: 当表中的数据量不断增大,查询数据的速度就 ...

  10. Java 13新特性

    switch表达式 switch表达式是Java 12开始就提供的预览特性,到了Java 13仍然没有被转正.此特性可以把switch的执行结果组合到复合表达式中进行运算. import java.t ...