mysql mycat one_教程 | MySql都会了,确定不学习一下MyCat分片?

这是小小本周的第二篇,我是小小,本周将会介绍MyCat以及MyCat分片。

MyCat 介绍

什么是MyCat

官方网站::http://www.mycat.org.cn/ http://www.mycat.io/ db proxy Mycat

MyCat 架构

601cf38204981875e5f36227faa80114.png

MyCat 核心概念

Schema

Schema:由它指定逻辑数据库(相当于MySQL的database数据库)

Table

Table:逻辑表(相当于MySQL的table表)

DataNode

DataNode:真正存储数据的物理节点

DataHost

DataHost:存储节点所在的数据库主机(指定MySQL数据库的连接信息)

User

User:MyCat的用户(类似于MySQL的用户,支持多用户)

MyCat 主要解决问题

海量数据保存 2。查询优化

MyCat 对多数据库的支持

9921927dfb37b97129f4684787d5bddf.png

MyCat 分片策略

MyCAT支持水平分片与垂直分片:水平分片:一个表格的数据分割到多个节点上,按照行分隔。垂直分片:一个数据库中多个表格A,B,C,A存储到节点1上,B存储到节点2上,C存储到节点3 上。

20cbc1282fe7c80d6acc5e033fab770d.pngMyCAT通过定义表的分片规则来实现分片,每个表格可以捆绑一个分片规则,每个分片规则指定一个分 片字段并绑定一个函数,来实现动态分片算法。

Schema

Schema:逻辑库,与MySQL中的Database(数据库)对应,一个逻辑库中定义了所包括的Table。

Table

Table:表,即物理数据库中存储的某一张表,与传统数据库不同,这里的表格需要声明其所存储的 逻辑数据节点DataNode。在此可以指定表的分片规则。

DataNode

DataNode:MyCAT的逻辑数据节点,是存放table的具体物理节点,也称之为分片节点,通过 DataHost来关联到后端某个具体数据库上

DataHost

DataHost:定义某个物理库的访问地址,用于捆绑到Datanode上

MyCat 安装

下载MyCat

wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

解压缩

tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

进入mycat/bin,启动MyCat

- 启动命令:./mycat start- 停止命令:./mycat stop- 重启命令:./mycat restart- 查看状态:./mycat status

访问MyCat

使用mysql的客户端直接连接mycat服务。默认服务端口为【8066】mysql -uroot -p123456 -h127.0.0.1 -P8066

MyCat 分片

配置schema.xml

什么是schema.xml

schema.xml作为Mycat中重要的配置文件之一,管理着Mycat的逻辑库、表、分片规则、DataNode 以及DataHost之间的映射关系。弄懂这些配置,是正确使用Mycat的前提。schema 标签用于定义MyCat实例中的逻辑库 Table 标签定义了MyCat中的逻辑表 dataNode 标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。dataHost标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读 写分离配置和心跳语句。

Schema.xml 配置

<?xml version="1.0"?> 配置Server.xml server.xml介绍 server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。 server.xml配置 配置rule.xml rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算 法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有tableRule和function这两个标 签。在具体使用过程中可以按照需求添加tableRule和function。 此配置文件可以不用修改,使用默认即可。

select user()

配置server.xml

server.xml 介绍

server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。

server.xml 配置

<?xml version="1.0" encoding="UTF-8"?>druidparsermycatTESTDB

配置rule.xml

rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算 法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有tableRule和function这两个标 签。在具体使用过程中可以按照需求添加tableRule和function。此配置文件可以不用修改,使用默认即可

<?xml version="1.0" encoding="UTF-8"?>sharding_idhash-intpartition-hash-int.txt

tableRule 标签配置说明:

name 属性指定唯一的名字,用于标识不同的表规则 rule 标签则指定对物理表中的哪一列进行拆分和使用什么路由算法。columns 内指定要拆分的列名字。algorithm 使用 function 标签中的 name 属性。连接表规则和具体路由算法。当然,多个表规则 可以连接到同一个路由算法上。table 标签内使用。让逻辑表使用这个规则进行分片。

function 标签配置说明:

name 指定算法的名字。class 制定路由算法具体的类名字。property 为具体算法需要用到的一些属性。

几个常用的分片规则

连续分片

日期列分区法

create_timesharding-by-dateyyyy-MM-dd2014-01-0110 配置说明: tableRule标签: columns :标识将要分片的表字段 algorithm :指定分片函数 function标签: dateFormat :日期格式 sBeginDate :开始日期 sPartionDay :分区天数,即默认从开始日期算起,分隔10天一个分区 二、范围约定 配置说明: tableRule标签: create_timesharding-by-monthyyyy-MM-dd2014-01-01create_timesharding-by-hour24

配置说明 tableRule标签:columns :标识将要分片的表字段 algorithm :指定分片函数 function标签:dateFormat :日期格式 sBeginDate :开始日期 sPartionDay :分区天数,即默认从开始日期算起,分隔10天一个分区

范围约定

user_idrang-longautopartition-long.txt

配置说明 tableRule标签:columns :标识将要分片的表字段 algorithm :指定分片函数 function标签:mapFile :指定分片函数需要的配置文件名称

autopartition-long.txt文件内容:所有的节点配置都是从0开始,及0代表节点1,此配置非常简单,即预先制定可能的id范围对应某个分 片

# range start-end ,data node index# K=1000,M=10000.0-500M=0 0-100 0500M-1000M=1 101-200 1201-300 21000M-1500M=2default=0# 或以下写法# 0-10000000=0# 10000001-20000000=1

优势:扩容无需迁移数据 缺点:热点数据,并发受限

离散分片

枚举法

user_idhash-intpartition-hash-int.txt00

配置说明 tableRule标签:columns :标识将要分片的表字段 algorithm :指定分片函数 function标签:mapFile :指定分片函数需要的配置文件名称 type :默认值为0,0表示Integer,非零表示String defaultNode :指定默认节点,小于0表示不设置默认节点,大于等于0表示设置默认节点,0代表节 点1。

默认节点的作用:枚举分片时,如果碰到不识别的枚举值,就让它路由到默认节点。如果不配置默认节点(defaultNode值小于0表示不配置默认节点),碰到不识别的枚举值 就会报错:

partition-hash-int.txt 配置:

10000=0 列等于10000 放第一个分片10010=1男=0女=1beijing=0tianjin=1zhanghai=2

求模法

user_idmod-long3

tableRule标签:columns :标识将要分片的表字段 algorithm :指定分片函数 function标签:count :节点数量

一致性hash

user_idmurmur02160

c6bd4c0c032ea0120bf42db53b58e951.png等,还有一些其他分片,这里,暂时不说明

测试分片

把商品表分片存储到三个数据节点上。

ede60eb0a0fc8a57395cff32570e0c46.png

创建表

配置完毕后,重新启动mycat。使用mysql客户端连接mycat,创建表。

CREATE TABLE item (id int(11) NOT NULL,name varchar(20) DEFAULT NULL,PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8

分片测试

分片策略指定为“auto-sharding-long” 分片规则指定为“mod-long”

关于作者

我是小小,来自双鱼座的,外太空的一枚小孩纸,目前漂泊在一线城市,成为一枚正经的北漂人,我是小小,本期MyCat分片结束,我们下期再见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值