Mycat介绍及简单使用

今天我们来简单的介绍下数据库中间件——Mycat,以及它的简单使用

Mycat概述

Mycat是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。对数据进行分片处理之后,从原有的一个库,被切分为多个分片数据库,所有的分片数据库集群构成了整个完整的数据库存储。

用户可以把它看做是一个数据库代理,用MySQL客户端工具和命令行访问,其核心功能是分库分表,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。

Mycat拓扑结构


Mycat配置文件

Mycat有三个重要的配置文件,分别是service.xml,rule.xml,schema.xml

1.service.xml

service.xml主要配置mycat服务的参数,比如端口号,myact用户名和密码使用的逻辑数据库等


配置mycat基本信息,包括sql解析器,客户端连接端口号,管理端口号等


配置用户信息,test,user用户名,password密码,schemas逻辑数据库,readOnly是否只读,若为true,则说明该用户不能向数据库中插入,修改,删除数据,只能查询

2.rule.xml

rule.xml主要配置路由策略,主要有分片的片键,拆分的策略(取模还是按区间划分等)


columns表示对表中的哪一列进行求模,这边配置的是id列;mod-long对应下面的function的name


以上为求模分片规则,对2进行求模,数字可以自行更改

常见的分片规则:
PartitionByFileMap:枚举分片
AutoPartitionByLong:范围分片
PartitionByMod:求模分片
PartitionByDate:日期列分区法

3.schema.xml

schema.xml文件主要配置数据库的信息,例如逻辑数据库名称,物理上真实的数据源以及表和数据源之间的对应关系和路由策略等。


TESTDB对应第1个步骤中的逻辑数据库的名称,item为物理数据库表的名称,id为表主键,dataNode对应下面的dataNode的name,rule为分片规则,这边配置的是求模分片,如果要多个分片接合,中间用逗号分隔


node_db01为dataNode的名称,dataHost对应dataHost的name,db01,db02,db03为物理数据库


dataHost01为逻辑主机的名称,writeHost配置Mycat连接物理数据库的信息,server1为名称,localhost:3306为数据库连接ip和端口号,本机为localhost,ddl_mgr为登录物理数据库的用户名,hik12345#为登录物理数据库的密码

Mycat简单使用

1.启动Mycat:mycat\bin\startup_nowrap.bat


2.在命令行访问mycat逻辑数据库:mysql -utest -ptest -h127.0.0.1 -P8066 –DTESTDB



3.创建数据库

create database db01; 

create database db02;  

create database db03;  

4.创建表

在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中创建

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;

在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;

5.插入数据

insert into users(name,indate) values('aa',now());

insert into item(value,indate) values(100,now());

insert into item(value,indate) values(200,now());

insert into item(value,indate) values(300,now());

insert into item(value,indate) values(400,now());

最后查看数据库,可以看到实现了分库分表。





评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值