博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mycat入门教程
阅读量:4349 次
发布时间:2019-06-07

本文共 2652 字,大约阅读时间需要 8 分钟。

mycat介绍

  • 介绍在官方网站上有比较详细的介绍,在这里复制粘贴没什么意思,大家到官网上看

前置条件

本教程是在window环境下运行的,实际生产推荐在Linux上运行。

必备条件(自行安装,如果不会装请先打好基础在来学习):

  • JDK:建议是1.7及其以上。
  • MySQL:必须是5.5及其以上。

拓扑结构

这里写图片描述

  • 两张表users和item,三个数据库db01,db02,db03(三个库在一个数据库实例上)
  • users只在db01中存储。
  • item表被分割到db02和db03中存储。
create database db01;  CREATE TABLE users ( id INT NOT NULL AUTO_INCREMENT, name varchar(50) NOT NULL default '', indate DATETIME NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (id) )AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;

在db02和db03中分别创建item表,SQL脚本如下

create database db02;   CREATE TABLE item ( id INT NOT NULL AUTO_INCREMENT, value INT NOT NULL default 0, indate DATETIME NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (id) )AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8; create database db03; CREATE TABLE item ( id INT NOT NULL AUTO_INCREMENT, value INT NOT NULL default 0, indate DATETIME NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (id) )AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;

开始使用

  • 先打mycat官方网站上下载安装包,网址为 下载图如下所示:
    下载图示
  • 然后在conf目录下编辑service.xml,rule.xml,schema.xml三个文件。
  • service.xml主要配置mycat服务的参数,比如端口号,myact用户名和密码使用的逻辑数据库等
  • role.xml主要配置路由策略,主要有分片的片键,拆分的策略(取模还是按区间划分等)
  • schema.xml文件主要配置数据库的信息,例如逻辑数据库名称,物理上真实的数据源以及表和数据源之间的对应关系和路由策略等。
  • 配置如下所示:

  • server.xml

druidparser
1
8066
9066
test
TESTDB
user
TESTDB
true
  • role.xml
    该路由表表明采用mod2的方式进行路由。通过下面可知是对item表的id键进行取模分表的,取模分到db02和db03,而users表直接路由到db01中。
id
mod-long
2
  • schema.xml 数据库的url,usename,password按实际情况填写。
select user()

启动测试

  • 在命令行切换到bin目录下,然后执行如下命令:
    这里写图片描述
    正确启动后会显示如下命令:
    这里写图片描述
    然后表示我们启动服务成功。

验证结果

  • 在命令行访问mycat逻辑数据库,采用如下的命令:

mysql -utest -ptest -h127.0.0.1 -P8066 -DTESTDB

  • 现在通过数据库查询数据库和表,发现只有逻辑数据库TESTDB而不是db01, db02, db03;而且表也是统一显示的,而不是分布在不同的实际数据库中。参考图片如下:

    这里写图片描述

    • 现在在访问Mycat在数据库中插入数据,看数据能否按照前面配置的路由规则进行分表。
    • 现在执行如下的SQL语句进行数据的插入。
insert into users(name,indate) values('kk',now()); insert into users(name,indate) values('ss',now()); insert into item(id,value,indate) values(1,100,now()); insert into item(id,value,indate) values(2,100,now());
    • 然后在mycat上查看是否插入成功,下图显示插入成功。
      这里写图片描述
    • 然后登录实际的数据库,看分表是否成功。下图显示分表成功。
      这里写图片描述
      图上显示,插入的users表中的数据全部在db01中,而item表中的数据通过Id取模后均匀的分布在db02和db03中。这样就根据实际的路由策略进行了分表。
    • 测试完成!!~数据进行了分库分表!

转载于:https://www.cnblogs.com/wxseng/p/9612863.html

你可能感兴趣的文章
Mapnik使用postgres中的栅格数据
查看>>
html基本知识
查看>>
IOS手势不识别
查看>>
HDU 1599 find the mincost route(floyd求最小环 无向图)
查看>>
hibernate模糊查询-Restrictions.ilike & Expression.like
查看>>
python @property
查看>>
Java学习之异常处理
查看>>
combox的DispalyMember和ValueMember属性的测试
查看>>
Start Developing Mac Apps -- Human Interface Design 用户界面设计
查看>>
linux下安装Mongodb
查看>>
Page.RegisterStartupScript和Response.Write的区别。
查看>>
hdu4348区间更新的主席树+标记永久化
查看>>
bzoj3261: 最大异或和 可持久化trie
查看>>
ZOJ 2532 Internship
查看>>
HDU 3452 Bonsai
查看>>
[Erlang12] Mnesia分布式应用
查看>>
图的遍历 | 1013 连通块块数
查看>>
Kinect 开发 —— 进阶指引(上)
查看>>
python学习笔记(六)time、datetime、hashlib模块
查看>>
uva489(需要考虑周全)
查看>>