Mycat 入门 分库分表
2017-02-16 11:29
225 查看
对mycat 几天的学习和了解,基本有了大致的方向,今天就把学习到的分享下:
主要的配置文件:server.xml 、 schema.xml、rule.xml
接下来是Mycat下载,
http://dl.mycat.io/1.6-RELEASE/ 最稳定的是1.5版本,如果不需要特别使用到1.6的特性,1.5 版本就足够了, 目前我使用的是1.6
解压目录结构(window 版本)
进入conf 目录
准备工作做好后,接下来我们开始进行分库分表的操作,这里我是对每月数据进行水平拆分
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属性。
password :密码 schemas 数据库名 必须和schemas 属性中name 一致
初步设置好后我们开始建表建库
在物理库中建立名为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数据库,查看数据是否按照之前确定的规则写入不同的数据库。
主要的配置文件: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数据库,查看数据是否按照之前确定的规则写入不同的数据库。
相关文章推荐
- Mysql系列五:数据库分库分表中间件mycat的安装和mycat配置详解
- Mycat 数据库分库分表中间件
- Mycat 数据库分库分表中间件
- Mycat 数据库分库分表中间件
- Mycat分表分库:从零开始
- 学习mycat实现分库分表
- Mycat 读写分离+分库分表
- MyCat分表分库规则实现
- 使用mycat实现数据库的分库分表
- Windows环境Mycat数据库分库分表中间件部署
- mycat分表分库的原理是什么?
- Mycat 数据库分库分表中间件
- 【数据库中间件】MyCat分表分库规则实现
- 实战mycat读写分离和分库分表(2)-本地mysql主从配置
- Mycat 数据库分库分表中间件
- Mycat分表分库原则
- MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
- 数据库性能优化的五种方案(mycat,基于阿里coba开源的数据库中间件,很容易实现分库分表、主从切换功能。另一个当当网开源的一个库 sharding-jdbc)
- MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
- Windows环境Mycat数据库分库分表中间件部署