mycat-3-实战篇

news2025/1/20 13:35:35

1 总结:

1:用的表必须在mycat的配置文件中配置。

2:mycat默认分片策略中,都是针对表的主键,默认是id,如果主键不是id的,请去rule.xml自己复制一份修改

3:

2 注意细讲解

1:schema.xml中没有配置的表,用mycat创建表报错。

如下图:我在配置文件没有good3,所以用mycat创建会失败。

 

 

2 rule.xml 分片策略文件,若表的主键不是id,则要自己复制一个引用。

 

 

 

schema.xml数据库实例配置(默认都是主库读写 注意要改对应配置)

balance:只有主机,所有的 读写操作都是要在主机进行。要设置为0

                双主双从的时候 设置为1              

                一主多从模式 设置为 3 .

switchType: 主从时要设置为 -1,否则将会把数据写入从库了。造成数据不一致。

3 实战分库----数据水平拆分

3.1每个库中所有表结构相同(一个mysql实例,但是创建三个库)

全部所有表的数据都会分在自己配置的库中, 但是底下是一个mysql中三个库。

<mycat:schema xmlns:mycat="http://io.mycat/">

	<schema name="mycatdb" checkSQLschema="true" sqlMaxLimit="100">
		<!--table是逻辑表名 dataNode:来源于哪 ,rule:分片规则,auto-sharding-long 按id值划分规则 -->
		<!-- 所有表数据均分到这三个库中 -->
		<table name="good" dataNode="dn1,dn2,dn3" rule="sharding-by-murmur" />
		<table name="item" dataNode="dn1,dn2,dn3" rule="sharding-by-murmur" />
        <table name="order" dataNode="dn1,dn2,dn3" rule="sharding-by-murmur" />
	</schema>
	<!--  ,db1,db2,db3,真实的库 -->
	<dataNode name="dn1" dataHost="localhost1" database="db1" />
	<dataNode name="dn2" dataHost="localhost1" database="db2" />
	<dataNode name="dn3" dataHost="localhost1" database="db3" />
	<!--  真实的mysql实例 -->
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
			  <!--按照心跳机制来判断真实的数据库是否正常运行 -->
		<heartbeat>select user()</heartbeat>
		<!-- 主库-->
		<writeHost host="hostM1" url="192.168.135.128:3306" user="root"
				   password="root">
				   <!-- 主从配置的从库,你要是没有就删除即可-->
			<readHost host="hostS2" url="192.168.135.4:3306" user="root" password="xxx" />
		</writeHost>
	</dataHost>	
</mycat:schema>

 

3.2  每个库中所有表结构相同(两个mysql实例)

  1.    mycat逻辑库连接两个mysql实例
  2.   两个mysql都是db1的库,但是表的结构都是一样的。数据会按分片规则,插入到对应的实例中。
<mycat:schema xmlns:mycat="http://io.mycat/">

	<schema name="mycatdb" checkSQLschema="true" sqlMaxLimit="100">
		<!--table是逻辑表名 dataNode:来源于哪 ,rule:分片规则,auto-sharding-long 按id值划分规则 -->
		<!-- 所有表数据均分到这两个库中 -->
		<table name="good" dataNode="dn1,dn2" rule="sharding-by-murmur" />
		<table name="item" dataNode="dn1,dn2" rule="sharding-by-murmur" />
         <table name="order" dataNode="dn1,dn2" rule="sharding-by-murmur" />
	</schema>
	<!--  ,db1,db2,真实的库 -->
	<dataNode name="dn1" dataHost="localhost1" database="db1" />
	<dataNode name="dn2" dataHost="localhost2" database="db1" />
	<!--  真实的mysql实例 -->
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
			  <!--按照心跳机制来判断真实的数据库是否正常运行 -->
		<heartbeat>select user()</heartbeat>
		<!-- 主库-->
		<writeHost host="hostM1" url="192.168.135.128:3306" user="root"
				   password="root">
				   <!-- 主从配置的从库,你要是没有就删除即可-->
			<readHost host="hostS2" url="192.168.135.4:3306" user="root" password="xxx" />
		</writeHost>
	</dataHost>	
		<!--  真实的mysql实例 -->
	<dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
			  <!--按照心跳机制来判断真实的数据库是否正常运行 -->
		<heartbeat>select user()</heartbeat>
		<!-- 主库-->
		<writeHost host="hostM1" url="192.168.135.129:3306" user="root"
				   password="root">
				   <!-- 主从配置的从库,你要是没有就删除即可-->
			<readHost host="hostS2" url="192.168.135.5:3306" user="root" password="xxx" />
		</writeHost>
	</dataHost>
</mycat:schema>

4 实战分库----数据业务拆分

<mycat:schema xmlns:mycat="http://io.mycat/">

	<schema name="mycatdb" checkSQLschema="true" sqlMaxLimit="100">
		<!--table是逻辑表名 dataNode:来源于哪 ,rule:分片规则,auto-sharding-long 按id值划分规则 -->
		
		<table name="t_brand" dataNode="goods"/>
		<table name="t_spec" dataNode="goods"/>
          <table name="t_item" dataNode="goods"/>
		<table name="t_good" dataNode="goods"/>
          <table name="t_good_desc" dataNode="goods"/>

		<table name="t_content" dataNode="content"/>
		<table name="t_content_category" dataNode="content"/>

		<table name="t_order" dataNode="order1,order2" rule="sharding-by-murmur"/>
		<table name="t_pay" dataNode="order1,order2" rule="sharding-by-murmur"/>

		<table name="t_user" dataNode="user"/>
		<table name="t_address" dataNode="user"/>

	</schema>
	<!--  goods-db,content-db,order1-db,order2-db,user-db,真实的库 -->
	<dataNode name="goods" dataHost="localhost1" database="goods-db" />
	<dataNode name="content" dataHost="localhost1" database="content-db" />
	<dataNode name="order1" dataHost="localhost1" database="order1-db" />
	<dataNode name="order2" dataHost="localhost1" database="order2-db" />
	<dataNode name="user" dataHost="localhost1" database="user-db" />
	<!--  真实的mysql实例 -->
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
			  <!--按照心跳机制来判断真实的数据库是否正常运行 -->
		<heartbeat>select user()</heartbeat>
		<!-- 主库-->
		<writeHost host="hostM1" url="192.168.135.128:3306" user="root"
				   password="root">
				   <!-- 主从配置的从库,你要是没有就删除即可-->
			<readHost host="hostS2" url="192.168.135.4:3306" user="root" password="xxx" />
		</writeHost>
	</dataHost>	
</mycat:schema>

5 实战分库----一个库下某几个表水平拆分

在同一个库下,只有某几个表数据过大,想要拆分。

6 代码实战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/40963.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Springboot启动流程分析(四):完成启动流程

目录 一 添加BeanPostProcessors到IOC容器 二 国际化支持 三 初始化监听器的多路播放器 四 刷新容器 五 注册监听器到IOC容器的多播器 六 完成bean的大规模实例化 6.1 大规模实例化bean 6.1.1 连续三层do...while循环作用 6.1.2 FactoryBean是什么&#xff1f;为什么要…

04 YAML kubetnetes世界里的通用语

文章目录1. 前言2. 声明式和命令式是怎么回事&#xff1f;3. 什么是YAML&#xff1f;4. 什么是API对象&#xff1f;4.1 k8s都有哪些资源对象4.2 列出kubectl 命令详细执行过程5. 如何描述 API 对象5.1 命令式5.2 声明式5.2.1 声明式YAML语法详解5.2.1.1 header部分详解5.2.1.2 …

【教学类-19-01】20221127《ABAB式-规律排序-A4竖版2份》(中班)

展示效果&#xff1a; 单人使用样式&#xff1a; 单页打印样式 ​ 背景需求&#xff1a; 中班幼儿需要掌握ABAB规律排序&#xff0c;如下图所示&#xff0c;AB两个元素能外形不同、颜色不同。 ​ ​利用Python Word单元格填色功能&#xff0c;随机生成AB样式&#xff0c;引…

STM32模拟IIC与IIC四种实现数字光强采集模块GY30(标准库与HAL库)

目录 代码实现是的IIC通信&#xff0c;数据采集后在串口显示&#xff0c;方便大家实现二次开发 原件选择 GY-30 数字光强度介绍 BH1750芯片参数 引脚说明 BH1750指令集 接线表设计 通过四种方式实现GY-30数据采集 1.标准库模拟IIC实现GY-30采集并串口1显示 2.标准库IIC…

重构uniapp uni-ui coloerUI项目

重构uniapp uni-ui coloerUI项目这里写自定义目录标题重构uniappuni-uicoloerUI项目起源流程重构uniappuni-uicoloerUI项目 起源 从网上复制了若依移动端的代码,但是对里面的文件夹布局方式和第三方组件库引入方式不甚了解,就想着从头创建一个空白项目&#xff0c;然后一步一…

Linux中设置开机启动执行命令和普通用户配置环境变量开机启动生效

记录&#xff1a;343 场景&#xff1a;在CentOS 7.9操作系统上&#xff0c;开机启动就执行自定义的命令&#xff0c;配置rc.local文件达到需求&#xff1b;在普通用户中配置环境变量开机启动生效&#xff0c;使用profile实现。 版本&#xff1a; 操作系统&#xff1a;CentOS…

01、Docker入门

目录 1、Docker是什么 2、Docker与虚拟化 3、Docker虚拟化的好处 好处一&#xff1a;应用部署方便 好处二&#xff1a;服务器同等配置&#xff0c;性能更优&#xff0c;利用率更高 4、核心概念 5、CentOS7 安装docker(在线方式) 6、镜像 7、Docker容器 8、查看Docker容…

typescript 八叉树的简单实现

查了一些文章&#xff0c;准备自己用typescript写一个简单的八叉树场景管理。 所谓的简单&#xff0c;就是所有元素都是边长为1的立方体。 元素类和树节点类 //元素类&#xff0c;因为都是边长为1的立方体&#xff0c;所以就用cube命名 export class CubeData {public reado…

由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开

一、问题描述 在使用Windows的远程桌面工具连接WindowsServer2016服务器时&#xff0c;无法连接到服务器&#xff0c;并且提示【由于没有远程桌面授权服务器可以提供许可证&#xff0c;远程回来连接已经断开。请跟服务器管理员联系】。 二、解决办法 2.0、前提 Windows Serv…

黑胶歌曲没权限,看我python大展神通,一分钟一个歌单

前言 大家早好、午好、晚好吖 ❤ ~ 人之初&#xff0c;喜白嫖。 大家都喜欢白嫖&#xff0c;我也喜欢&#xff0c;那么今天就来试试怎么白嫖抑云~ 一、需要的准备 1、环境 Python3.6以上 pycharm2019以上 2、模块 requests # 发送请求模块 第三方模块 exec js # 调用JS的…

CocosCreater 教程(下)

1.物理系统 1.1 2D刚体 刚体是组成物理世界的基本对象。 1.2 2D 碰撞组件 目前引擎支持三种不同的碰撞组件&#xff1a; 盒碰撞组件&#xff08;BoxCollider2D&#xff09;、圆形碰撞组件&#xff08;CircleCollider2D&#xff09; 和 多边形碰撞组件&#xff08;PolygonCo…

Java中的抽象类和接口

java中的抽象类和接口抽象类什么是抽象类&#xff1f;抽象的使用场景抽象类的案例抽象类的特征、注意事项小结抽象类的应用知识&#xff1a;模版方法模式接口接口概述、特点接口的基本使用&#xff1a;被实现接口与接口的关系&#xff1a;多继承JDK8开始接口新增方法接口的注意…

AtCoder Beginner Contest 277 F. Sorting a Matrix(拓扑排序+虚点)

题目 n*m(2<n,m<1e6,n*m<1e6)的矩阵&#xff0c; 第i行第j列元素a[i][j](0<a[i][j]<n*m) 对于值为0的元素&#xff0c;你可以将其赋值为任意正整数&#xff0c; 不同位置的0元素&#xff0c;可以被赋值成不同的正整数 然后&#xff0c;你可以执行以下操作若…

firefly3399 移植linux5.15.80 - 2022-11-27

需要注意的是&#xff0c;虚拟机需要足够的硬盘空间&#xff0c;不小于15GB&#xff01;&#xff01; 一、内核源码下载 国内镜像地址 git clone https://kernel.source.codeaurora.cn/pub/scm/linux/kernel/git/stable/linux.git/ 基本达到了带宽的最大值。 国外地址&#…

Android使用AudioTrack播放WAV音频文件

目录 1、wav文件格式 2、wav文件解析 3、wav文件播放 QA&#xff1a; 开始播放wav的时候使用了系统的播放器mediaplayer进行播放&#xff0c;但是无奈mediaplayer支持的实在不好。 好些年前自己做过pcm播放使用的是audiotrack&#xff0c;参考&#xff1a;CSDN 其实两者之…

php 进程池设计与实现,phper必学!

php 进程池设计与实现phper 为什么要学习进程池池的概念为什么要有进程池?动态创建进程缺点进程池的优点选择子进程为新任务服务的方式进程池模型服务端客户端结语phper 为什么要学习进程池 在php开发过程中经常使用的 php-fpm 使用的进程模型就是进程池&#xff0c;学习进程…

如何基于FSM有限状态机实现Enemies AI

文章目录&#x1f35f; Preface&#x1f355; 巡逻状态&#x1f37f; 寻路状态&#x1f32d; 攻击状态&#x1f357; 完整代码&#x1f35f; Preface 本文简单介绍如何基于FSM有限状态机实现Enemies AI&#xff0c;首先定义敌人的AI逻辑&#xff1a;默认状态下Enemy为巡逻状态…

刷爆力扣之等价多米诺骨牌对的数量

刷爆力扣之等价多米诺骨牌对的数量 HELLO&#xff0c;各位看官大大好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 今天阿呆继续记录下力扣刷题过程&#xff0c;收录在专栏算法中 &#x1f61c;&#x1f61c;&#x1f61c; 该专栏按照不同类别标签进行刷题&…

使用 nlohmann 解析 json 文件

使用 nlohmann 解析 json 文件nlohmann/json的配置json基本数据结构json文件的读取、构造与输出C对象与nlohmann::json对象的转换C对象转换成nlohmann::json对象nlohmann::json对象转换成C对象序列化反序列化序列化nlohmann 是德国工程师&#xff0c;以其名字为工程名的 nlohm…

springboot项目的打包发布部署,jar和war的区别

简介&#xff1a; 1.Spring Boot使用了内嵌容器&#xff0c;因此它的部署方式也变得非常简单灵活&#xff0c;可以将Spring Boot项目打包成JAR包来独立运行&#xff0c;也可以打包成WAR包部署到Tomcat容器中运行&#xff0c;如果涉及大规模的部署&#xff0c;Jenkins成为最佳选…