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

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

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

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


MyCat-入门-分片测试-schema.xml 配置

配置 schema.xml

MyCat 当中分片的配置。对于分片的配置会涉及到,MyCat 当中的两份配置文件,一份是 MyCat 的核心配置文件 schema.xml,另外一份是 server.xml。

1、对于 MyCat 的配置文件 schema.xml 这份配置文件,是 MyCat 的核心配置文件,所有关于 MyCat 当中的逻辑库、逻辑表、分片规则、数据节点、数据源等相关配置都是需要在这份配置文件当中配置的。打开这份配置文件,查看配置文件的内容。

image.png

2、使用 VI 编辑器,打开这份配置文件,使用 VI 编辑器来编写配置文件的时候,实际上并不是特别方便。因为这里面如果标签比较多很容易出错,所以这个时候我们在进行编辑的时候,采用一个工具, Notepad++ 当中的工具,插件会有一个FTP 的插件,点 Npp FTP 这个插件,点 show Npp FTP window,如下图:

image.png

会打开一个窗口,在这个里面来配对一下连接远程服务器。

点击 Add new ,弹出一个窗口,修改名称为 MyCat1,需要连接 192.157 这台服务器,端口号是 22,连接方式是 SFPT ,用户名 root,密码 itcast。

image.png

点击下图所示图标,进行连接。

3、查看根目录,刷新展示根目录下所有的文件夹。对于刚才安装的 MyCat 来说,它是存放在 user—local 这个目录下的,这里面有一个 MyCat,在 MyCat 当中有一个 conf,conf 当中有一个 schema.xml,我们要修改的是这份配置文件,双击打开。在这份配置文件中,如 schema、table、dataNode 在 MyCat 的核心概念中提到过。

schema 配置的是逻辑库,table 配置的是逻辑表,dataNode 是数据节点,dataHost 是节点主机,在这份配置文件当中,主要配置的就是这些信息。

image.png

4、schema:标签用于定义 Mycat 实例中的逻辑库

Table:标签定义了 MyCat 中的逻辑表, rule 用于报定分片规则, auto−sharding-long 的分片规则是按ID值的范围进行分片,1-5000000 为第 1 片,5000001-10000000 为第 2 片……具体设置我们会在第四节中讲解。

dataNode:标签定义了 Mycat 中的数据节点,也就是我们通常说所的数据分片。

dataHost:标签在 mycat 逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳活句。

5、要配置逻辑库的操作,在这里面附有一个逻辑库,逻辑库下面有一个 TB_TEST 逻辑表,逻辑表又要进行分片,分到三个节点主机上。

image.png

6、首先来看 schema 这里会有一个逻辑库,逻辑库我们叫他 ITCAST。

<schema name="ITCAST"checkSQLschema=

"true"sqlMaxLimit="100">

只修改需要修改的部分,其他默认固定的东西不要动。table指的是逻辑表,逻辑表的表名叫 TB_TEST。

<table name="TB_TEST"dataNode="dn1,dn2,dn3"rule

="auto-sharding-long"/>

table 当中有一个属性叫 dataNode,这个 dataNode 指的是逻辑表,指在哪些数据节点中存在,这张表中的数据到底在哪些数据节点中存放呢?

dn1,dn2,dn3 实际上是一个别名,他引用的是下面 dataNode 当中的内容值。

<dataNode name="dn1"dataHost="localhost1"database

="db1"/>

<dataNode name="dn2"dataHost="localhost1"database

="db2"/>

<dataNode name="dn3"dataHost="localhost1"database

="db3"/>

dataNode 指的是 dataHost ,哪个 dataHost?localhost1 引用的是 <dataHost name="localhost 1"maxCon="1000"minCon

="10" balance="0"

引用的是下图所示地址。

image.png

还要指定 database 数据库,数据节点关联的是 db1 这个数据库。

<dataNode name="dn1"dataHost="localhost1"database

="db1"/>

<dataNode name="dn2"dataHost="localhost1"database

="db1"/>

<dataNode name="dn3"dataHost="localhost1"database

="db1"/>

dn1 关联的是 localhost1,对于我们来说会有三个 dataHost,dn1 对应 db1,dn2 对应 db2,所以这里不应该是 localhost 1,而是 localhost 2,localhost 3,但是在 local host 123 这三个节点中,都会有一个同名的数据库叫 db1。

image.png

dataHost 指的是下面 dataHost 的内容值。

<dataHost name="localhost 1"maxCon="1000"minCon

="10"balance="0"

writeType="0" dbType="mysql" dbDriver="native"switchType

="1" slaveThreshold="100">

<heartbeat>select user()</heartbeat>

<writeHost host="hostM1"url="localhost:3306"user

="root"password="123456">

</writeHost>

</dataHost>

既然有 local host 1,local host 2,local host 3,也就是说这个内容值也要配置多套。

<dataHost name="localhost 2"maxCon="1000"minCon

="10"balance="0"

writeType="0" dbType="mysql" dbDriver="native"switchType

="1" slaveThreshold="100">

<heartbeat>select user()</heartbeat>

<writeHost host="hostM1"url="localhost:3306"user

="root"password="123456">

</writeHost>

</dataHost>

<dataHost name="localhost 3"maxCon="1000"minCon

="10"balance="0"

writeType="0" dbType="mysql" dbDriver="native"switchType

="1" slaveThreshold="100">

<heartbeat>select user()</heartbeat>

<writeHost host="hostM1"url="localhost:3306"user

="root"password="123456">

</writeHost>

</dataHost>

7、我们继续来看 dataHost 当中的配置,在 dataHost 当中 local host 1 是它的节点名称,这些属性大家目前先不关心。

<dataHost name="localhost 1"maxCon="1000"minCon

="10"balance="0"

writeType="0" dbType="mysql" dbDriver="native"switchType

="1" slaveThreshold="100">

紧接着还有一个

heartbeat(<heartbeat>select user()</heartbeat>),这个是 MyCat 当中的心跳,就是监测下面这些 MySQL是否还能正常运行,是心跳监测体制,我们也不用动。

接下来还有一个叫做 writeHost,数据写入节点是哪一个,也就是我们对应的数据源。最终我们分片的数据,是要存放在数据库当中的,存放在 MySQL 当中的数据库,要指定关联的是哪个 MySQL 服务,所以我们需要修改下图光标所是地方。

image.png

修改如下图,密码要改成自己的密码 itcast。

image.png

8、这样这份配置文件就基本完成了,回过头来,我们简单解读一下刚才所做的配置。

首先在上面 scheme 当中( !DOCTYPE mycat:schema SYSTEM"schema. dtd">),我们配置了逻辑库的库名,在这个逻辑库当中只有一张逻辑表 TB_TEST,这张逻辑表由于进行分片,分片这张表会存在三个节点当中,分别是 dn1,dn2,dn3,这三个节点分别关联 local host 1,也就是 192.168.192.157:3306 这台数据库,关联的是这台数据库中 db1 这个数据库; local host 2 关联的是 192.168.192.158 上面的 db1; local host 3 关联的是 192.168.192.159 上面的 db1,这样关于 schema.xml 当中的逻辑库,逻辑表,以及数据节点这块的配置已经完成了。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
2月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
251 1
|
4月前
|
Web App开发 JavaScript 测试技术
Playwright 极速入门:1 小时搞定环境搭建与首个测试脚本
本文带你1小时快速入门Playwright,完成环境搭建并编写首个测试脚本。Playwright是微软推出的现代化Web自动化测试工具,支持Chromium、Firefox和WebKit三大浏览器引擎,具备跨平台、多语言(Python/JS/Java/C#)特性。其核心优势包括:智能自动等待机制减少失败率、内置录制工具实时生成脚本、多语言灵活选择,以及真移动端设备模拟能力,显著提升测试效率和可靠性。
|
测试技术 持续交付 开发者
探索自动化测试的无限可能:从入门到精通
在软件开发领域,确保产品质量是至关重要的。自动化测试作为一种高效、可靠的测试方法,正逐渐成为行业标准。本文将带你深入了解自动化测试的世界,从基础概念到实践技巧,帮助你掌握这一强大的工具。无论你是初学者还是有经验的开发者,都能从中获得宝贵的知识和启发。
|
12月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
722 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
11月前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
319 6
|
XML 前端开发 Java
XML基本概念入门学习指南
XML(eXtensible Markup Language)是一种可扩展的标记语言,和HTML语言语法类似,同属于标记语言。
416 14
|
12月前
|
Java 测试技术 Android开发
探索自动化测试的奥秘:从入门到精通
【10月更文挑战第37天】本文将带你进入自动化测试的世界,从基础知识到实战案例,逐步揭示自动化测试的神秘面纱。我们将一起探讨如何利用代码来简化测试过程,提高效率,并确保软件质量。无论你是初学者还是有经验的开发者,这篇文章都能为你提供有价值的见解和技巧。让我们一起踏上这段探索之旅吧!
|
12月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
1552 1
|
6月前
|
Android开发 开发者
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。
136 2
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
248 1