本文我们来介绍下MyCat的分库分表操作

分库分表

一、分片规则介绍

  在rule.xml中定义了各种myCat支持的分片规则。

  1. 取模mod-long
  2. 自然月分片 sharding-by-month
  3. 按日期(天)分片sharding-by-date
  4. 按单月小时拆分sharding-by-hour
  5. 范围约定,提前规划好分片字段某个范围属于哪个分片,auto-sharding-long
  6. 范围求模分片
  7. 取模范围约束sharding-by-pattern
  8. 分片枚举sharding-by-intfile
  9. 固定分片hash算法
  10. 截取数字hash解析sharding-by-stringhash
  11. 一致性hash
  12. 日期范围hash分片rangeDateHash
  13. 截取数字做hash求模范围约束sharding-by-prefixpattern
  14. 应用指定,在运行阶段有应用自主决定路由到那个分片。sharding-by-substring
  15. 冷热数据分片 sharding-by-date
  16. 有状态分片算法
  17. crc32slot分片算法

注意:

  1. id中推荐配置主键列
  2. 所有的 tableRule 只能使用一次。如果需要为多个表配置相同的分片规则,那么需要在此重新定义该规则。
  3. 在 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>

注意:

  1. 因为有三个库,所以添加了三个dataNode
  2. 使用的分配规则是crc32slot
  3. 主从和读写分离设置没有动,所以writeHostreadHost的配置没变

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教程【分库分表】相关推荐

  1. Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件

    转载自 Mycat - 数据库分库分表中间件,国内最活跃的.性能最好的开源数据库中间件 Mycat是什么 Mycat - 数据库分库分表中间件,国内最活跃的.性能最好的开源数据库中间件! 一个彻底开源 ...

  2. MySQL使用Mycat实现分库分表-读写分离

    MySQL使用Mycat实现分库分表-读写分离 Mycat Mycat介绍 什么是Mycat? Mycat架构 Mycat核心概念 MyCat主要解决的问题 MyCat对多数据库的支持 Mycat分片 ...

  3. Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战

    目录 前言 Linux+MySQL+MyCat实现读写分离,主从同步的解决方案 一.Linux下MySQL数据库服务的安装与部署 二.下载Linux MyCat 三.上传Linux服务器,并解压 四. ...

  4. 开源分布式数据库中间件MyCat架构简介(二)——基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理

    目录 前言 基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理 一.关于Mycat 二.Mycat 实现原理 三.MyCat 应用场景 四.MyCat 未来展望 五.Mycat 中相关概念 ...

  5. myCat实现分库分表

    0. 准备 本文基于docker启动mysql JDK:要求jdk必须是1.8及以上版本 MySQL:推荐mysql是5.6以上版本 分库分表的介绍_骑台风走的博客-CSDN博客分库分表的介绍http ...

  6. 【mycat】分库分表

    在分库分表时,我们先安装好mycat:https://blog.csdn.net/wangyunzhao007/article/details/107330854 一.垂直切分 按照业务模块进行切分, ...

  7. mycat配置访问oracle_MySQL:如何使用MyCAT实现分库分表?

    分库分表介绍 随着微服务这种架构的兴起,我们应用从一个完整的大的应用,切分为很多可以独立提供服务的小应用.每个应用都有独立的数据库. 数据的切分分为两种: 垂直切分:按照业务模块进行切分,将不同模块的 ...

  8. Windows环境下使用Mycat模拟分库分表-读写分离案例

    一.基本环境 W7 64位.Mycat1.6.MySQL8.0 二.Mycat核心配置文件配置 解压Mycat1.6,并对server.xml.schema.xml.rule.xml三个核心配置文件做 ...

  9. mysql查逻辑表的分片规则_MySQL(19) Mycat分片(分库分表)配置

    一.前言 本文将基于主从复制,读写分离的环境基础上进行一个简单的分片(分库分表)配置 二.Mycat分片配置 mycat分片主要在scheam.xml,rule.xml这2个表中配置 ① scheam ...

  10. MySQL使用MyCat实现分库分表

    MySQL分库分表的实现方式有: shardingJDBC:基于AOP原理,在应用程序中对本地执行的SQL进行拦截,解析.改写.路由处理.需要自行编码配置实现,只支持java语言,性能较高. MyCa ...

最新文章

  1. python 多线程日志切割+日志分析
  2. python十进制小数转二进制_python十进制和二进制的转换方法(含浮点数)
  3. python lambda表达式的使用方法(匿名函数)
  4. Ookla speedtest网速测试算法实现
  5. Windows环境下使用 Caffe在ImageNet上训练网络
  6. Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.... 此错误的解
  7. java中多态的例子_java中的多态案例
  8. 硬件:电脑DNS出现错误对应的解决方案
  9. MFC窗口程序显示命令行输出窗口的方法
  10. 【Xamarin开发 Android 系列 2】VS2015跨平台开发的几种方式
  11. IIS与Tomcat的区别
  12. 如何使用Orchard搭建敏捷个人的网站(2)
  13. StringUtil里面的常用的方法
  14. 静态网页连接mysql数据库_静态网页可以联接sql数据库吗?代码怎么写?
  15. excel函数 不能正常显示数字
  16. MODULE_AUTHOR 功能
  17. 【AGC031E】Snuke the Phantom Thief(费用流)
  18. 714.买卖股票含手续费
  19. 【kubernetes/k8s源码分析】calico node felix源码分析之一
  20. 客户成功 | 数据解码技能提升,Smartbi助力长沙烟草找到“新路子”

热门文章

  1. 布道微服务_16服务端故障的紧急避险措施
  2. 言语理解-片段阅读的结构剖析练习
  3. Failed to exceute script *.exe (pyinstaller生成的exe文件)
  4. 大龄码农适合做什么,比如40岁以上?
  5. thinkphp配置文件设置session有效期未生效的问题
  6. Briefings in Bioinformatics | 国际上最大的基于中药活性成分的药物转录图谱平台ITCM...
  7. 本周大新闻|128GB版Quest 2再降价,Mojo Vision完成“新A轮”融资
  8. 隐藏在摄像头里的AI
  9. char str[10]; str=string;
  10. 【云计算课程】Lecture 1 云计算概述