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/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 操作。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
297 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
58 2
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
87 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
3月前
|
运维 测试技术
拆分软件测试流程,一张图秒杀所有面试
本文主要介绍了软件测试流程的核心内容,包括需求分析、测试用例编写、测试执行、缺陷提交及回归测试等关键步骤。以迭代测试为例,详细说明了每个环节的具体操作和注意事项,并提供了一张测试流程图以便理解。测试流程确保了软件质量,是面试中常见的考察点。
81 7
拆分软件测试流程,一张图秒杀所有面试
|
4月前
|
资源调度 Java 调度
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
|
7月前
|
Java 测试技术 编译器
JMM测试利器-JCStress学习笔记
JMM测试利器-JCStress学习笔记
java202303java学习笔记第四十六天-请求-postman接口测试
java202303java学习笔记第四十六天-请求-postman接口测试
86 0
|
11天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
55 11
|
1月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
65 3
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
80 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)