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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 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。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
2月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
270 1
|
4月前
|
Web App开发 JavaScript 测试技术
Playwright 极速入门:1 小时搞定环境搭建与首个测试脚本
本文带你1小时快速入门Playwright,完成环境搭建并编写首个测试脚本。Playwright是微软推出的现代化Web自动化测试工具,支持Chromium、Firefox和WebKit三大浏览器引擎,具备跨平台、多语言(Python/JS/Java/C#)特性。其核心优势包括:智能自动等待机制减少失败率、内置录制工具实时生成脚本、多语言灵活选择,以及真移动端设备模拟能力,显著提升测试效率和可靠性。
|
测试技术 持续交付 开发者
探索自动化测试的无限可能:从入门到精通
在软件开发领域,确保产品质量是至关重要的。自动化测试作为一种高效、可靠的测试方法,正逐渐成为行业标准。本文将带你深入了解自动化测试的世界,从基础概念到实践技巧,帮助你掌握这一强大的工具。无论你是初学者还是有经验的开发者,都能从中获得宝贵的知识和启发。
|
Java 测试技术 开发者
初学者入门:掌握单元测试的基础与实践
【10月更文挑战第14天】单元测试是一种软件测试方法,它验证软件中的最小可测试单元——通常是单独的函数或类——是否按预期工作。单元测试的目标是确保每个模块在其自身范围内正确无误地运行。这些测试应该独立于其他模块,并且应该能够反复执行而不受外部环境的影响。
317 2
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
737 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
1056 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
12月前
|
Java 测试技术 Android开发
探索自动化测试的奥秘:从入门到精通
【10月更文挑战第37天】本文将带你进入自动化测试的世界,从基础知识到实战案例,逐步揭示自动化测试的神秘面纱。我们将一起探讨如何利用代码来简化测试过程,提高效率,并确保软件质量。无论你是初学者还是有经验的开发者,这篇文章都能为你提供有价值的见解和技巧。让我们一起踏上这段探索之旅吧!
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
1589 1
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
586 2
|
10月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。