MyCat - 分片 - 垂直拆分 - 测试 | 学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 快速学习 MyCat - 分片 - 垂直拆分 - 测试

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

课程地址:https://developer.aliyun.com/learning/course/756/detail/13260


MyCat - 分片 - 垂直拆分 - 测试

内容介绍:

一、测试步骤

二、查询数据

三、插入数据

 

一、测试步骤

接下来对所配置的垂直分片的配置进行测试,首先重新启动 Mycat,要执行的是bin/mycat rastart,重新登录 mycat,执行 show databases 指令,可以看到 DATABASE 变成了 ITCAST_DB ,原因是现在的逻辑库库名为 ITCAST_DB

image.png

在逻辑库中有多个逻辑表

<schema name=”ITCAST_DB” checkSQLschema=”false” sqlMaxLimit=”100”>

<table name=”tb_areas_city” dataNode=”dn1” primaryKey=”id”/>

<table name=”tb_areas_provinces” dataNode=”dn1” primaryKey=”id”/>

<table name=”tb_areas_region” dataNode=”dn1” primaryKey=”id”/>

<table name=”tb_user” dataNode=”dn1” primaryKey=”id”/>

<table name=”tb_user_address” dataNode=”dn1” primaryKey=”id”/>

<table name=”tb_goods_base” dataNode=”dn2” primaryKey=”id”/>

<table name=”tb_goods_desc” dataNode=”dn2” primaryKey=”goods_id”/>

<table name=”tb_goods_item_cat” dataNode=”dn2” primaryKey=”id”/>

<table name=”tb_order_item” dataNode=”dn3” primaryKey=”id”/>

<table name=”tb_order_master” dataNode=”dn3” primaryKey=”order_id”/>

<table name=”tb_order_pay_log” dataNode=”dn3” primaryKey=”out_trade_no”/>

</schema>

切换数据库,

mysql> use ITCAST_ DB;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

然后执行 show databases,里面有关于用户的表、关于商品的表和关于订单的表

image.png

虽然这块在操作的时候,各个数据库中存储了很少一部分表,但是最终访问的是mycat,访问 mycat,mycat 当中就配置了这些逻辑表,并设置这些数据表在哪个数据节点当中存储的,这样的话就能看到系统当中所有的表。

 

二、查询数据

如果想要查询全部的商品信息,商品信息是存储在 158 里面,再来执行select*from tb_user,查看所有用户信息,用户信息是存储在 157 上面的,输入 select*from tb_order_master 来查看订单信息。以上数据都能正常查询并返回,也代表着刚才配置的 mycat 垂直拆分的配置是正确的。

查询使用的语句为:

Selec*from tb_ goods_ base;

Select*from tb_ user;

Select*from tb_ order_ master ;

 

三、插入数据

1)插入 user_address 表

insert into

tb_ user_ address(id,user_ id,province. id,city_ id, town_ id,mobile,address,contact , is_ _default,notes,create. _date,alias) values (nu11,'java00001' ,NULL , NULL , NULL, ' 13900112222'. '钟楼',张三','0',NULL ,NULL ,NULL)

插入 user 是插入到 157 界面

2)插入 order 表

insert into tb_ order _item(id, item_ id, goods_ id,order . _id,title,pr ice,num,total fee,pic path,seller_id)

values (nu11,19, 149187842867954,3,'3G 6','1.00",5,'5. 00' ,NULL, 'qiandu')

Order 是插入到 159 上面,代码出现错误

ERROR 1048(HY000) : Column ‘id' cannot be nu11

需要去指定一个 ID

image.png

接下来再来查询 tb_ order _item,输入代码 select*from tb_ order _item

这块的操作直接操作 mycat,不要操作 mysql,因为应用程序最后是操作 mycat,把 mycat 当成 mysql 操作。

3)测试跨分片的查询

SELECT order_id ,payment ,receiver, province ,city ,area FROM tb. _order. master。,tb_ _areas_ provinces p,tb_ _areas_ city C,tb_ _areas_ region r

WHERE o.receiver. _province = p. provinceid AND o.receiver. city = c.cityid AND o.receiver. region =r .areaid;

当运行上述的 SQL 语句时,MyCat 会报错, 原因是因为当前 SQL 语句涉及到跨域的 join 操作;这次的查询是多表联合查询。它要查询的是订单的信息,以及这个订单关联的省份、城市和区域的信息。SQL 语句关联的表有四张表,通过三个条件进行消除。执行一下 SQL 语句,在执行的时候发现这块出现了报错

image.png

报错内容为这条 SQL 无效路由,并且在多个表发现但是数据节点却没有进行结合。也就是说这里涉及到跨库的操作。虽然这块涉及的操作是 mycat,最终 mycat的还是将 SQL 语句发送到 Mysql 里面,这块设计的表有 order 表,Order 的表在159 这台服务器上,还涉及到 areas,用户的区域相关的表,这张表存放在 157 上面,这就是跨库连接查询。于是这时候 mycat 会报错,原因是因为当前 SQL 语句涉及到跨域的 join 操作。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
1048 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
运维 测试技术
拆分软件测试流程,一张图秒杀所有面试
本文主要介绍了软件测试流程的核心内容,包括需求分析、测试用例编写、测试执行、缺陷提交及回归测试等关键步骤。以迭代测试为例,详细说明了每个环节的具体操作和注意事项,并提供了一张测试流程图以便理解。测试流程确保了软件质量,是面试中常见的考察点。
831 7
拆分软件测试流程,一张图秒杀所有面试
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
578 2
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
385 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
资源调度 Java 调度
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
217 0
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
|
Java 测试技术 编译器
JMM测试利器-JCStress学习笔记
JMM测试利器-JCStress学习笔记
java202303java学习笔记第四十六天-请求-postman接口测试
java202303java学习笔记第四十六天-请求-postman接口测试
195 0
|
10月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
5月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
896 23
|
7月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
949 24