MyCat-入门-分片测试-分片配置测试 | 学习笔记

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 快速学习 MyCat-入门-分片测试-分片配置测试

开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(一):MyCat-入门-分片测试-分片配置测试】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/755/detail/13249


MyCat-入门-分片测试-分片配置测试

连接 mycat

通过另外一种方式来连接 mycat,上一节讲解的是通过命令行的方式来连接。之前在去操作 mysql 的时候,也接触过很多的工具,也能用来连接 mycat。

 image.png

新如上图所示操作。建一个连接 157,它依然是 mycat。主机地址 192.168.192.157,用户名 root,密码 123456, 注意端口号不再是 3306,如果端口号是 3306,那么连接的是 mysql。

在这端口号是 8060,点击测试连接。逻辑库 ITCAST 就已经有了,逻辑表也展示出来了。

下面进行分片测试。虽然刚才已经配置了逻辑库,已经配置了逻辑表,但是这个表没有定义结构,接下来就要来定义这个表结构,在定义这个表结构之前,现在这个客户端一定要认清楚,窗口 157(1)实际上是 mycat, 那么其他三个访问的都是mysql。

切换到 db1 这个数据库下,show tables, db1 当中没有表,这三个 mysql 数据库当中,db1 当中并没有表结构的。接下来需要在 mycat 当中来创建一张表,就tb test 这张表,注意是在 mycat 当中来创建,那么就需要拷贝一下建表语句,那么建表语句创建了 tb test 这张表,一个组件是 ID,然后还有一个是 title,组件就是ID。默认的存储引擎 innodb 字符集 utf8,然后执行。

表结构已经创建好了,是在 mycat 当中创建的表,接下来去看 mysql,三台 mysql实例当中,表已经有了,接下来在另外两个实例当中,表也有了。

那么来执行 select*from tb-test,表当中是空的,并没有任何的数据。执行之后,下面的三排 mysql 库当中也是空的。接下来再做一个测试,在 mycat 当中要去插入表结构当中数据,注意后面所有的操作都是针对 mycat 来操作的,不要直接操作 mysql,查看 mysql 主要是进行验证。

image.png

插入如上图 123 三条数据执行,title 分别是 good1、good2,good3。数据已经插入进来,接下来再来执行这个查询。

image.png

针对上图逻辑表来插入的三条数据。说明逻辑表只是一个逻辑上的结构,最终的数据存储是要在具体的 mysql 数据库当中进行存储。

验证一下底层的这三台 mysql 当中的数据,这三条数据在 157 上全部都有,在158,159 上都没有。

再来插入一条数据,插入 ID 为 4,goods4,数据插入成功接下来再来执行操作。mycat 当中 4 条数据已经插入进来了,那么刚刚插入的第四条数据在 157, 158,159 没有存储数据。如果 158 和 159 永远不存储数据,那么这个分片就是失败的,因为它没有起到扩容的作用。

做一个测试,插入一条数据,那么这一次插入的数据 ID,插入的是比较大的一个值,5,000,001。

image.png

接下来查询一次 5,000,001,接下来看 157 的值如上图,要记数据库当中的数据,没有 5,000,001;再来看 158 有 5,000,001;159 没有数据。

再插入一个 5,000,002,那么插入 5,000,002, 按照分片规则,实际上它记录的依然是第二个节点也就是 158,159 是不会有的。当 ID 值变为 10,000,001 的时候,它就进入 159 了。

这是由于分片规则来决定的,配置了一个分片规则,叫做 rule,rule 是分片规则,叫做 auto-sharding-long。这个分片规则它是这样的,0 到 500 万它存储在第一个节点,500 万到 1,000 万是存储在第二个节点,1,000 万到 1,500 万是存储在第三个节点。

我们来测试一下超过 1,500 万怎么办,插入 1500 万,执行会发现告诉我们,不能找到一个有效的数据节点,因为 ID 已经大于了 15,000,000, 也就是说超过 1,500 万就会报错。这些信息到底是在哪配置的,分片规则是什么样的,都是跟 rule 是相关系的。

rule 它是一个分片规则,分片规则关联的实际上是有一个配置文件叫做 rule.xml,注意这叫 auto-sharding-long。

rule.xml,点击进来找一个叫 tablerule,就是表的关键规则叫做 auto-sharding-long,它会根据 AD 字段进行分线,分线算法是 rang-long。

rang-long 引用的就是分片函数,那么方向函数当中定义的有一个映射文件,叫做欧洲 autopartiton-long.txt。关联的是 txt 文件,打开文件,K 代表的是 1000,0 到 500 万是属于第一个节点,data node index, 数据节点的索引,0 到 500 万属于第一个节点,500 万到 1,000 万属于第二个节点,1,000 万到 1,500 万属于第三个节点,刚才也测试了超过 1,500 万报错。假如 TB-TEST 这张表,随着系统的运行,这张表的数据超过 1, 500 万增加节点,增加节点然后去修改我们的分片规则就可以了。

在这主要去做一下关于 mycat 的分片的测试。那么通过这个测试,主要是对于 mycat 来实现数据库的分片有一个印象。

最后来再看上面那幅图,应用程序再进行操作的时候,只需要去操作逻辑库就行了,操作逻辑库当中的逻辑表。具体的数据到底要往哪儿去存储,往哪个节点上去存储,是由我们在配置文件当中配置的分片规则来决定的,它会自动进行存储。

而且在查询的时候,只需要指定 select*from TB TEST,要查询全部的数据,只需要从 mycat 当中去查就行了,只需要去从 mycat 的逻辑表当中来查,不需要关心哪个数据存放在哪个节点上,这一步 mycat 会帮我们完成查询及数据的汇总操作。

使用 mycat 和使用 mysql 是一模一样的。所以有了 mycat 之后,后面如果要用mycat, 应用程序再进行操作的时候,直接操作 mycat,不直接操作 mysql。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9天前
|
JavaScript 测试技术 Windows
vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)
本文介绍了如何使用vue-cli和webpack为Vue项目配置不同的生产和测试环境,包括修改`package.json`脚本、使用`cross-env`处理环境变量、创建不同环境的`.env`文件,并在`webpack.prod.conf.js`中使用`DefinePlugin`来应用这些环境变量。
25 2
vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)
|
14天前
|
Linux
kickstart自动安装系统 --DHCP 配置及测试
PXE+Kickstart自动安装系统需配置DHCP服务器分配IP。dhcpd.conf示例:设置更新样式、忽略客户端更新、指定下一服务器及启动文件。定义子网、网关、掩码、动态地址池并预留特定MAC地址。重启xinetd、NFS、DHCP服务,确保新服务器与Kickstart服务器在同一网络,避免误装其他机器。注意隔离测试网络以防干扰生产环境。
61 18
|
13天前
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。
|
11天前
|
JavaScript 测试技术
vue配置生产环境.env.production、测试环境.env.development
该文章介绍了如何在Vue项目中配置和使用不同的环境变量文件(.env、.env.production、.env.development)以适应开发、测试和生产环境,并通过修改`package.json`中的scripts来实现不同环境的打包。
39 0
vue配置生产环境.env.production、测试环境.env.development
|
26天前
|
Web App开发 Java 测试技术
自动化测试的利器:Selenium WebDriver入门与实践
【9月更文挑战第8天】在软件开发的海洋中,测试是确保我们不会溺水的那根救生索。Selenium WebDriver,作为自动化测试的明星工具,让这根救生索更加结实可靠。本文将带你快速上手Selenium WebDriver,从基础设置到实际操作,再到实战演练,让你的开发之旅更加平稳顺畅。
|
2月前
|
测试技术 Go 开发者
掌握Golang测试:从入门到实践
【8月更文挑战第31天】
33 0
|
2月前
|
Web App开发 敏捷开发 Java
自动化测试入门:以Selenium为例
【8月更文挑战第31天】在软件开发的海洋中,自动化测试犹如一座灯塔,指引着项目质量保障的方向。本文将带你驶入Selenium自动化测试的港湾,从搭建环境到编写简单的测试脚本,逐步展开对Web应用功能和界面的自动化验证之旅。通过实际代码示例,我们将一起探索如何利用Selenium工具提升测试效率,确保软件质量的同时,为开发流程增添一份信心与乐趣。
|
2月前
|
缓存 NoSQL 网络协议
【Azure Redis 缓存 Azure Cache For Redis】在创建高级层Redis(P1)集成虚拟网络(VNET)后,如何测试VNET中资源如何成功访问及配置白名单的效果
【Azure Redis 缓存 Azure Cache For Redis】在创建高级层Redis(P1)集成虚拟网络(VNET)后,如何测试VNET中资源如何成功访问及配置白名单的效果
|
23天前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
106 7
Jmeter实现WebSocket协议的接口测试方法
|
23天前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
101 3
快速上手|HTTP 接口功能自动化测试
下一篇
无影云桌面