Mycat应用1-安装配置



一. Mycat安装

  • Mycat是一款数据库分库分表中间件。

1. 安装依赖项

  • 安装JDK1.7+
  • 安装Mysql(略), 建议安装mysql8.0以下版本

2. 安装Mycat

# 下载安装
$ wget http://dl.mycat.io/1.6.7.3/20190828135747/Mycat-server-1.6.7.3-release-20190828135747-linux.tar.gz
$ tar -zxvf Mycat-server-1.6.7.3-release-20190828135747-linux.tar.gz -C /usr/local/

# 启动(控制台)、停止、重启等
$ mycat <console | start | stop | restart | status | dump>

# 登录Mycat (默认端口号为:8066)
$ mysql -uroot -p123456 -P8066 -h192.168.1.100

二. Mycat-Web

1. 下载安装Mycat-Web

$ wget http://dl.mycat.io/mycat-web-1.0/Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz
$ tar -zxvf Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz -C /usr/local/

2. 启动服务

$ nohup /usr/local/mycat-web/start.sh &
$ netstat -anotp|grep 8082

3. 访问站点http://192.168.100.1:8082/mycat


三. Mycat配置

1. server.xml: 保存了所有mycat需要的系统配置信息, 参考官方说明

<mycat:server xmlns:mycat="http://io.mycat/">  
    <system>  
        <property name="nonePasswordLogin">0</property> <!-- 0为需要密码登陆、1为不需要密码登陆 ,默认为0,设置为1则需要指定默认账户-->  
        <property name="useHandshakeV10">1</property>  
        <property name="useSqlStat">0</property> <!-- 1为开启实时统计、0为关闭 -->  
        <property name="useGlobleTableCheck">0</property> <!-- 1为开启全加班一致性检测、0为关闭 -->  
        <!-- 0 表示是表示使用本地文件方式。  表示的是根据数据库来生成  ,表示时间戳的方式 ID= 64 位二进制 (42(毫秒)+5(机器 ID)+5(业务编码)+12(重复累加) -->  
        <property name="sequnceHandlerType">1</property>  
        <!--默认为type 0: DirectByteBufferPool | type 1 ByteBufferArena | type 2 NettyBufferPool -->  
        <property name="processorBufferPoolType">0</property>  
        <!--分布式事务开关,0为不过滤分布式事务,1为过滤分布式事务(如果分布式事务内只涉及全局表,则不过滤),2为不过滤分布式事务,但是记录分布式事务日志-->  
        <property name="handleDistributedTransactions">0</property>  
        <!--off heap for merge/order/group/limit 1开启 0关闭-->  
        <property name="useOffHeapForMerge">1</property>  
        <property name="serverPort">8066</property>
        <property name="managerPort">9066</property>
        <!--单位为m-->  
        <property name="memoryPageSize">64k</property>  
        <!--单位为k-->  
        <property name="spillsFileBufferSize">1k</property>  
        <property name="useStreamOutput">0</property>  
        <!-- 单位为m -->  
        <property name="systemReserveMemorySize">384m</property>  
        <!--是否采用zookeeper协调切换 -->  
        <property name="useZKSwitch">false</property>  
    </system>  
    <!-- 连接MyCat库的用户名和密码 -->  
    <user name="root" defaultAccount="true">  
        <property name="password">Yifan123.</property>  
        <property name="schemas">catdb</property>  
    </user>  
</mycat:server>

2. schema.xml: 管理MyCat的逻辑库、表、分片规则、DataNode以及DataSource。

<mycat:schema xmlns:mycat="http://io.mycat/">
    <!-- name:逻辑数据库名 checkSQLschema:把schema的字符去掉 sqlMaxLimit:减少过多的数据返回-->
    <schema name="catdb" checkSQLschema="false" sqlMaxLimit="100">
        <!-- name:逻辑表表名 primaryKey:逻辑表对应真实表的主键 autoIncrement:主键自增长 dataNode:逻辑表所属的dataNode rule:逻辑表使用的规则名字 -->
        <table name="stu_file" primaryKey="id" autoIncrement="true" subTables="stu_file$1-10" dataNode="dn1" rule="mod-long"/>
        <table name="stu_user" primaryKey="id" autoIncrement="true" subTables="stu_user$1-2" dataNode="dn1" rule="auto-sharding-long"/>
    </schema>
    <!-- name:数据节点名 dataHost:该分片属于哪个数据库实例 database:定义该分片属性哪个具体数据库实例上的具体库 -->
    <dataNode name="dn1" dataHost="localhost1" database="test" />
    <!-- name:数据库实例名 -->
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
        <!-- 用于和后端数据库进行心跳检查的语句 -->
        <heartbeat>select user()</heartbeat>
        <!-- 写实例 -->
        <writeHost host="hostM1" url="192.168.240.129:3306" user="root" password="123456">
            <!-- 读实例 -->
            <readHost host="hostS2" url="192.168.240.129:3306" user="root" password="123456" />
        </writeHost>
    </dataHost>
</mycat:schema>

3. rule.xml: 分片规则定义,主要有tableRule和function这两个标签。在具体使用过程中可以按照需求添加tableRulefunction

<!-- name:定义表规则名 -->  
<tableRule name="mod-long">  
    <rule>  
        <!-- 指定对物理表中的哪一列进行拆分 -->  
        <columns>id</columns>  
        <!-- 使用什么路由算法 -->  
        <algorithm>mod-long</algorithm>  
    </rule>  
</tableRule>  
<!-- name 指定算法的名字 class 制定路由算法具体的类名字 -->  
<function name="mod-long" class="io.mycat.route.function.PartitionByMod">  
    <!-- property 为具体算法需要用到的一些属性。 -->  
    <property name="count">15</property>  
</function>  

<tableRule name="auto-sharding-long">
    <rule>
        <columns>id</columns>
        <algorithm>rang-long</algorithm>
    </rule>
</tableRule>
<function name="rang-long" class="io.mycat.route.function.AutoPartitionByLong">
    <property name="mapFile">autopartition-long.txt</property>
</function>

4. autopartition-long.txt: 所有的节点配置都是从0开始,及0代表节点1。

# range start-end ,data node index
# K=1000,M=10000.
0-500M=0
500M-1000M=1

参考:
Mycat官方下载地址:http://dl.mycat.io
Github下载地址:https://github.com/MyCATApache/Mycat-download
Mycat-Web:https://blog.csdn.net/qq_37674858/article/details/80136826

发布了49 篇原创文章 · 获赞 29 · 访问量 4783
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览