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

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

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中。这样就根据实际的路由策略进行了分表。
  • 测试完成!!~数据进行了分库分表!

参考文章

你可能感兴趣的文章
java - 线程1打印1-10,当线程打印到5后,线程2打印“hello”,然后线程1继续打印...
查看>>
创建扩展/自定义控件的方法
查看>>
闲聊javascript继承和原型
查看>>
js原生事件系统与坐标系统
查看>>
MongoDB学习系列(1)--入门介绍
查看>>
坐标转换convertRect
查看>>
canvas练习 - 七巧板绘制
查看>>
eas之去掉关闭eas页面时校验是否修改的提示
查看>>
第三次作业
查看>>
pwm的频率和占空比
查看>>
Electron 入门文档
查看>>
HDU-4565 So Easy! 公式化简
查看>>
希尔排序
查看>>
进程vs线程
查看>>
git设置用户名和邮箱
查看>>
接口测试——HttpClient工具的https请求、代理设置、请求头设置、获取状态码和响应头...
查看>>
装饰器 -- 类装饰器
查看>>
[CTSC2018]暴力写挂
查看>>
mysql 存储过程 删除重复
查看>>
shell 编程初级
查看>>