MyCat教程【分库分表】
本文我们来介绍下MyCat的分库分表操作
分库分表
一、分片规则介绍
在rule.xml
中定义了各种myCat支持的分片规则。
- 取模mod-long
- 自然月分片 sharding-by-month
- 按日期(天)分片sharding-by-date
- 按单月小时拆分sharding-by-hour
- 范围约定,提前规划好分片字段某个范围属于哪个分片,auto-sharding-long
- 范围求模分片
- 取模范围约束sharding-by-pattern
- 分片枚举sharding-by-intfile
- 固定分片hash算法
- 截取数字hash解析sharding-by-stringhash
- 一致性hash
- 日期范围hash分片rangeDateHash
- 截取数字做hash求模范围约束sharding-by-prefixpattern
- 应用指定,在运行阶段有应用自主决定路由到那个分片。sharding-by-substring
- 冷热数据分片 sharding-by-date
- 有状态分片算法
- crc32slot分片算法
注意
:
- id中推荐配置主键列
- 所有的 tableRule 只能使用一次。如果需要为多个表配置相同的分片规则,那么需要在此重新定义该规则。
- 在 crc32Slot 算法中的分片数量一旦给定,MyCat 会将该分片数量和 slor 的取值范围保存到文件中。在次修改分片数量时是不会生效的,需要将该文件删除。文件位置位于 conf目录中的 ruledata 目录中。
二、分库配置
2.1 创建3个数据库
在master
中分别创建3个数据库demo1
,demo2
,demo3
,因为主从的关系会同步到从库中。
create database demo1 default character set utf8;
create database demo2 default character set utf8;
create database demo3 default character set utf8;
2.2 schema.xml配置
修改schema.xml文件中的信息,如下:
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"><table name="t_user" dataNode="dn1,dn2,dn3" rule="crc32slot" /></schema><dataNode name="dn1" dataHost="localhost1" database="demo1" /><dataNode name="dn2" dataHost="localhost1" database="demo2" /><dataNode name="dn3" dataHost="localhost1" database="demo3" /><dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- can have multi write hosts --><writeHost host="hostM1" url="192.168.88.180:3306" user="root"password="123456"><!-- can have multi read hosts --><readHost host="hostS2" url="192.168.88.181:3306" user="root" password="123456" /></writeHost></dataHost>
</mycat:schema>
注意
:
- 因为有三个库,所以添加了三个
dataNode
- 使用的分配规则是
crc32slot
- 主从和读写分离设置没有动,所以
writeHost
和readHost
的配置没变
2.3 修改rule.xml文件
因为使用的是crc32slot
算法,且有3个数据库,所以需要修改rule.xml中的配置
同时我们需要删除掉ruledata
目录中的规则文件,不然修改的3
不会起作用
重启mycat服务
查看分配规则
2.3 在mycat中创建t_user表
先删除原来创建的t_user
表,然后通过mycat创建t_user
表示,通过mycat创建会多出来一个_slot
字段。
CREATE TABLE t_user (`id` INT,`name` VARCHAR (30),`age` INT,PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
三、分库测试
在mycat客户端插入数据,然后去对应的物理库中查询具体的情况
insert into t_user(id,name,age)values(1,'波波烤鸭',18)
注意
:插入语句的语法要完整,不要偷懒省略字段,尤其是id
自增长!!!
数据按照我们设置的规则分别存储到了各自数据的表结构中了。
然后我们来看下查询操作,通过mycat看能否将所有的数据都查询出来,
MyCat教程【分库分表】相关推荐
- Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件
转载自 Mycat - 数据库分库分表中间件,国内最活跃的.性能最好的开源数据库中间件 Mycat是什么 Mycat - 数据库分库分表中间件,国内最活跃的.性能最好的开源数据库中间件! 一个彻底开源 ...
- MySQL使用Mycat实现分库分表-读写分离
MySQL使用Mycat实现分库分表-读写分离 Mycat Mycat介绍 什么是Mycat? Mycat架构 Mycat核心概念 MyCat主要解决的问题 MyCat对多数据库的支持 Mycat分片 ...
- Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战
目录 前言 Linux+MySQL+MyCat实现读写分离,主从同步的解决方案 一.Linux下MySQL数据库服务的安装与部署 二.下载Linux MyCat 三.上传Linux服务器,并解压 四. ...
- 开源分布式数据库中间件MyCat架构简介(二)——基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理
目录 前言 基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理 一.关于Mycat 二.Mycat 实现原理 三.MyCat 应用场景 四.MyCat 未来展望 五.Mycat 中相关概念 ...
- myCat实现分库分表
0. 准备 本文基于docker启动mysql JDK:要求jdk必须是1.8及以上版本 MySQL:推荐mysql是5.6以上版本 分库分表的介绍_骑台风走的博客-CSDN博客分库分表的介绍http ...
- 【mycat】分库分表
在分库分表时,我们先安装好mycat:https://blog.csdn.net/wangyunzhao007/article/details/107330854 一.垂直切分 按照业务模块进行切分, ...
- mycat配置访问oracle_MySQL:如何使用MyCAT实现分库分表?
分库分表介绍 随着微服务这种架构的兴起,我们应用从一个完整的大的应用,切分为很多可以独立提供服务的小应用.每个应用都有独立的数据库. 数据的切分分为两种: 垂直切分:按照业务模块进行切分,将不同模块的 ...
- Windows环境下使用Mycat模拟分库分表-读写分离案例
一.基本环境 W7 64位.Mycat1.6.MySQL8.0 二.Mycat核心配置文件配置 解压Mycat1.6,并对server.xml.schema.xml.rule.xml三个核心配置文件做 ...
- mysql查逻辑表的分片规则_MySQL(19) Mycat分片(分库分表)配置
一.前言 本文将基于主从复制,读写分离的环境基础上进行一个简单的分片(分库分表)配置 二.Mycat分片配置 mycat分片主要在scheam.xml,rule.xml这2个表中配置 ① scheam ...
- MySQL使用MyCat实现分库分表
MySQL分库分表的实现方式有: shardingJDBC:基于AOP原理,在应用程序中对本地执行的SQL进行拦截,解析.改写.路由处理.需要自行编码配置实现,只支持java语言,性能较高. MyCa ...
最新文章
- python 多线程日志切割+日志分析
- python十进制小数转二进制_python十进制和二进制的转换方法(含浮点数)
- python lambda表达式的使用方法(匿名函数)
- Ookla speedtest网速测试算法实现
- Windows环境下使用 Caffe在ImageNet上训练网络
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.... 此错误的解
- java中多态的例子_java中的多态案例
- 硬件:电脑DNS出现错误对应的解决方案
- MFC窗口程序显示命令行输出窗口的方法
- 【Xamarin开发 Android 系列 2】VS2015跨平台开发的几种方式
- IIS与Tomcat的区别
- 如何使用Orchard搭建敏捷个人的网站(2)
- StringUtil里面的常用的方法
- 静态网页连接mysql数据库_静态网页可以联接sql数据库吗?代码怎么写?
- excel函数 不能正常显示数字
- MODULE_AUTHOR 功能
- 【AGC031E】Snuke the Phantom Thief(费用流)
- 714.买卖股票含手续费
- 【kubernetes/k8s源码分析】calico node felix源码分析之一
- 客户成功 | 数据解码技能提升,Smartbi助力长沙烟草找到“新路子”
热门文章
- 布道微服务_16服务端故障的紧急避险措施
- 言语理解-片段阅读的结构剖析练习
- Failed to exceute script *.exe (pyinstaller生成的exe文件)
- 大龄码农适合做什么,比如40岁以上?
- thinkphp配置文件设置session有效期未生效的问题
- Briefings in Bioinformatics | 国际上最大的基于中药活性成分的药物转录图谱平台ITCM...
- 本周大新闻|128GB版Quest 2再降价,Mojo Vision完成“新A轮”融资
- 隐藏在摄像头里的AI
- char str[10]; str=string;
- 【云计算课程】Lecture 1 云计算概述