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
相关文章
|
1月前
|
测试技术 持续交付 开发者
探索自动化测试的无限可能:从入门到精通
在软件开发领域,确保产品质量是至关重要的。自动化测试作为一种高效、可靠的测试方法,正逐渐成为行业标准。本文将带你深入了解自动化测试的世界,从基础概念到实践技巧,帮助你掌握这一强大的工具。无论你是初学者还是有经验的开发者,都能从中获得宝贵的知识和启发。
|
1月前
|
Java 测试技术 开发者
初学者入门:掌握单元测试的基础与实践
【10月更文挑战第14天】单元测试是一种软件测试方法,它验证软件中的最小可测试单元——通常是单独的函数或类——是否按预期工作。单元测试的目标是确保每个模块在其自身范围内正确无误地运行。这些测试应该独立于其他模块,并且应该能够反复执行而不受外部环境的影响。
54 2
|
17天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
62 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
12天前
|
Java 测试技术 Android开发
探索自动化测试的奥秘:从入门到精通
【10月更文挑战第37天】本文将带你进入自动化测试的世界,从基础知识到实战案例,逐步揭示自动化测试的神秘面纱。我们将一起探讨如何利用代码来简化测试过程,提高效率,并确保软件质量。无论你是初学者还是有经验的开发者,这篇文章都能为你提供有价值的见解和技巧。让我们一起踏上这段探索之旅吧!
|
18天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
1月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
204 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
34 2
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
64 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
14天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
49 3
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
67 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
下一篇
无影云桌面