您的位置:首页 > 编程语言 > Java开发

Mycat 入门 分库分表

2017-02-16 11:29 225 查看
对mycat 几天的学习和了解,基本有了大致的方向,今天就把学习到的分享下:

主要的配置文件:server.xml 、 schema.xml、rule.xml

环境搭建

JDK 部署(因为mycat 是基于java 开发),java 开发者都经过知道部署,目前我安装的版本是jdk-8u71,需要安装包的可以直接我邮箱
接下来是Mycat下载,

http://dl.mycat.io/1.6-RELEASE/    最稳定的是1.5版本,如果不需要特别使用到1.6的特性,1.5 版本就足够了, 目前我使用的是1.6

解压目录结构(window 版本)



进入conf 目录



准备工作做好后,接下来我们开始进行分库分表的操作,这里我是对每月数据进行水平拆分

schema.xml



mycatdemo 采用的是sharding-by-month分片策略,进行了dwn1-dwn12 分片

<table> 参数
在table参数配置中使用了rule="sharding-by-month"分片函数,当然数据节点的数目没有限制,在生产环境避免重复重启mycat这个节点的范围大小最好配置超过1年。

rule属性,该属性用于指定逻辑表要使用的规则名字,规则名字在rule.xml中定义,必须与tableRule标签中name属性属性值一一对应

<datanode>参数
该属性用于绑定逻辑库到某个具体的database上,该属性的值需要和dataNode标签中name属性的值相互对应

<datahost>参数
该属性用于定义该分片属于哪个数据库实例的,属性值是引用dataHost标签上定义的name属性。

Server.xml



password :密码      schemas   数据库名 必须和schemas 属性中name 一致

rule.xml





初步设置好后我们开始建表建库
在物理库中建立名为wallettran1-wallettran12的数据库

mysql> create database wallettran1; 

创建表

DROP TABLE IF EXISTS `mycatdemo`;

CREATE TABLE `mycatdemo` (

 `id` INT(11) NOT NULL COMMENT 'Id',

 `mycatname` VARCHAR(50) ,

 `createtime` DATETIME NOT NULL,

 PRIMARY KEY (`id`)



注意,这里是对每个库里面添加相同的表结构

操作完后重启mycat 服务,进入mycat ,会看到里面除了自带的库和表以外,还会额外有一个之前已经定义好的库和表,这个时候我们像该库中的表去添加数据

INSERT INTO mycatdemo(mycatname,createtime)VALUES('ceshi1','2015-4-4 00:00:00');

INSERT INTO mycatdemo(mycatname,createtime)VALUES('ceshi1','2015-7-7 00:00:00');

INSERT INTO mycatdemo(mycatname,createtime)VALUES('ceshi1','2015-10-1 00:00:00');

INSERT INTO mycatdemo(mycatname,createtime)VALUES('ceshi1','2015-6-8 00:00:00');

INSERT INTO mycatdemo(mycatname,createtime)VALUES('ceshi1','2015-9-12 00:00:00');

INSERT INTO mycatdemo(mycatname,createtime)VALUES('ceshi1','2015-11-3 00:00:00');

这里需要注意的是添加数据的时候一定要带上字段名,不然会报错的

进入localhost的user0~user3数据库,查看数据是否按照之前确定的规则写入不同的数据库。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jdk 开发人员 数据库