MySql都会了,确定不学习一下MyCat分片?

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"?>

<mycat:schema xmlns:mycat=“http://io.mycat/”>

配置Server.xml

server.xml介绍

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

server.xml配置

配置rule.xml

rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算

法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有tableRule和function这两个标

签。在具体使用过程中可以按照需求添加tableRule和function。

此配置文件可以不用修改,使用默认即可。

primaryKey=“ID”/>

<dataHost name=“localhost1” maxCon=“1000” minCon=“10” balance=“0”

writeType=“0” dbType=“mysql” dbDriver=“native” switchType=“1”

slaveThreshold=“100”>

select user()

<writeHost host=“hostM1” url=“192.168.24.129:3306” user=“root”

password=“root” >

</mycat:schema>

配置server.xml

===============================================================================

server.xml 介绍


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

server.xml 配置


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

<mycat:server xmlns:mycat=“http://io.mycat/”>

druidparser

mycat

TESTDB

</mycat:server>

配置rule.xml


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

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

<mycat:rule xmlns:mycat=”http://io.mycat/“ >

sharding_id

hash-int

<function name=“hash-int”

class=“io.mycat.route.function.PartitionByFileMap”>

partition-hash-int.txt

</mycat:rule>

tableRule 标签配置说明:

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

function 标签配置说明:

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

几个常用的分片规则

============================================================================

连续分片


日期列分区法

create_time

sharding-by-date

<function name=“sharding-by-date”

class=“io.mycat.route.function…PartitionByDate”>

yyyy-MM-dd

2014-01-01

10

配置说明:

tableRule标签:

columns :标识将要分片的表字段

algorithm :指定分片函数

function标签:

dateFormat :日期格式

sBeginDate :开始日期

sPartionDay :分区天数,即默认从开始日期算起,分隔10天一个分区

二、范围约定

配置说明:

tableRule标签:

create_time

sharding-by-month

<function name=“sharding-by-month”

class=“io.mycat.route.function…PartitionByMonth”>

yyyy-MM-dd

2014-01-01

create_time

sharding-by-hour

<function name=“sharding-by-hour”

class=“io.mycat.route.function…LastestMonthPartition”>

24

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

范围约定


user_id

rang-long

<function name=“rang-long”

class=“io.mycat.route.function.AutoPartitionByLong”>

autopartition-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 0

500M-1000M=1 101-200 1

201-300 2

1000M-1500M=2

default=0

或以下写法

0-10000000=0

10000001-20000000=1

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

离散分片


枚举法

user_id

hash-int

<function name=“hash-int”

class=“io.mycat.route.function.PartitionByFileMap”>

partition-hash-int.txt

0

0

配置说明 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

女=1

beijing=0

tianjin=1

zhanghai=2

求模法

user_id

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
id

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-gCv3tOk6-1715852394481)]

[外链图片转存中…(img-1ZiSV9te-1715852394482)]

[外链图片转存中…(img-nWfzaQHr-1715852394482)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值