MyCat教程五:实现分库分表[通俗易懂]

MyCat教程五:实现分库分表[通俗易懂]  本文我们来介绍下MyCat的分库分表操作 分库分表 一、分片规则介绍   在rule.xml中定义了各种myCat支持的分片规则。 取模mod-long 自然月分片 sharding-by-mo…

  本文我们来介绍下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;

代码100分

 

在这里插入图片描述

2.2 schema.xml配置

  修改schema.xml文件中的信息,如下:

代码100分<?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客户端插入数据,然后去对应的物理库中查询具体的情况

代码100分insert into t_user(id,name,age)values(1,"HG-93",14)
 

注意:插入语句的语法要完整,不要偷懒省略字段,尤其是id自增长!!!

在这里插入图片描述

数据按照我们设置的规则分别存储到了各自数据的表结构中了。

然后我们来看下查询操作,通过mycat看能否将所有的数据都查询出来,

在这里插入图片描述

 


关注微信公众号【程序员的梦想】,专注于Java,SpringBoot,SpringCloud,微服务,Docker以及前后端分离等全栈技术。

MyCat教程五:实现分库分表[通俗易懂]

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/11095.html

(0)
上一篇 2022-12-16
下一篇 2022-12-16

相关推荐

  • 图形化界面工具SQLyog的基本使用「建议收藏」

    图形化界面工具SQLyog的基本使用「建议收藏」 1、安装后连接本地数据库 参考:https://blog.csdn.net/qq_41520612/article/details/95474531 2、SQLyog的基本使用 …

    2023-03-28
    107
  • Python模块封装:提高代码可重用性和可维护性

    Python模块封装:提高代码可重用性和可维护性在Python开发中,模块是一个非常重要的概念。通过模块,我们可以将代码分割成一些可以重复利用的部分,使代码更加可维护、可重用和可扩展。本文将从多个方面为大家介绍Python模块封装的相关技术和实现方法。

    2024-03-29
    29
  • C语言基础项目:200 行代码实现贪吃蛇!思路+源码详解[通俗易懂]

    C语言基础项目:200 行代码实现贪吃蛇!思路+源码详解[通俗易懂]在标准的C库中函数rand可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX是stdlib.h 中定义的一个整数,它与系统有关。

    2022-12-14
    118
  • 加速Python代码的几个技巧

    加速Python代码的几个技巧Python是一门灵活且易于学习的编程语言,但某些情况下,Python代码可能会运行缓慢。为了克服这个问题,本文将介绍几个加速Python代码的技巧,包括使用列表推导式、使用生成器、使用装饰器等。

    2023-12-23
    67
  • MySQL关于命令的问题、Exists关键字[通俗易懂]

    MySQL关于命令的问题、Exists关键字[通俗易懂]truncate 与 delete 的区别 truncate table :删除内容、不删除定义、释放空间。 delete table : 删除内容、不删除定义、不释放空间。 drop table :

    2023-02-10
    99
  • python之包(Python 常用包)

    python之包(Python 常用包)   Python之所以受欢迎不光是因为它简单易学,更重要的是它有成千上万的宝藏库。这些库相当于是已经集成好的工具,只要安装就能在Python里使用。它们可以处理各式各样的问题,无需你再造轮子,而且随着社区的不断更新维护,有些库越来越强大,几乎能媲美企业级应用。那么这些工具库怎么下载安装呢?它们被放在一个统一的“仓库”里,名叫PyPi(Python Package Index),所有的库安装都是从这里调度。有了仓库之后,还需要有管理员,pip就是这样一个角色。

    2023-10-29
    69
  • redis 6.0下redis-cluster

    redis 6.0下redis-cluster伴随着Redis6.0的发布,作为最令人怦然心动的特性之一,Redis官方同时推出Redis集群的proxy了:redis-cluster-proxy,https://github.com/Redis

    2023-02-24
    107
  • mysql高可用安装包_安装MySQL数据库

    mysql高可用安装包_安装MySQL数据库() MySQL HA部署 环境准备 | 地址 |说明 | |–|–| |10.5.12.92 | pro-mysql-ha01,主节点 1 | |10.5.12.93 | pro-mysql-h

    2023-05-27
    91

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注