MyCat - 分片 - 数据库分片配置 | 学习笔记

简介: 快速学习 MyCat - 分片 - 数据库分片配置

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

课程地址:https://developer.aliyun.com/learning/course/758/detail/13329


MyCat - 分片 - 数据库分片配置

内容介绍:

一、分析配置文件的定义

二、逻辑表分析

 

一、分析配置文件的定义

image.png

1.分析:

<schemaname="V_SHOP"checkSQLschema="false" sqlMaxLimit="100">

在 MyCat 中,配置了一个逻辑库,名为 V_SHOP 。

sqlMaxLimit="100" 限制分页为 100 条,

checkSQLschema="false" 与数据库名的校验问题有关。


二、逻辑表分析

在逻辑库下声明了很多逻辑表:

1.关于基础信息的全局表:

//区域表

<table name="tb_areas" dataNode="dn1, dn2, dn3, dn4" primaryKey="areaid" type="globa1"/>

//省份表

<table name="tb_provinces" dataNode="dn1 , dn2 , dn 3 , dn4" primaryKey="provinceid"type="globa1"/>

//市

<table name="tb_cities" dataNode="dn1 , dn2 ,dn3 , dn4" primar yKey="cityid" type="globa1"/>

//数据字典表,存储的是系统中的基本信息

<table name="tb_dictionary" dataNode="dn1, dn2 , dn3 , dn4" primaryKey="id" type="globa1"/>

type="globa1"/  表示为全局表

基础信息表要声明为全局表,全局表意味着四个表结构在四个节点中

都存在:

image.png

上面的 dn1 , dn2 , dn 3 , dn4 对应数据节点:

<dataNodename="dn1"dataHost="host1" database="v_goods"/>

<dataNodename="dn2"dataHost="host2"dat abase="v_order"/>

<dataNode name="dn3" dataHost="host3" dat abase="v_log”/>

<dataNode name="dn4" dataHost="host4" database="v_log”/>

也就是上面的四张表在该四个节点中都会存在。

2.关于商品模块涉及的表结构:

<tablename="tb_brand" dataNode="dn1" primaryKey="id"/>

<tablename="tb_category"dataNode="dn1" primaryKey="id"/>

<table name="tb_sku" dataNode="dn1" primaryKey="id"/>

<table name="tb_spu" dataNode="dn1" primaryKey="id”/|I

商品模块涉及的表结构会存储在第一个节点,所以配置的 dataNode 为 dn1

3.与订单相关的表结构:

<table name="tb_order" dataNode="dn2" primaryKey="id"/>

<tablename="tb_order_item"dataNode="dn2" primaryKey="id"/>

<tablename="tb_order_log"dataNode="dn2" primaryKey="id"/>

存在第二个节点

4.第三个节点和第四个节点中都是存储的 tb_operatelog

下面的逻辑表会分散存储在 dn3 和 dn4 两个节点

<table name="tb_operatelog"dataNode="dn3,dn4" primar yKey="id" rule="log-sharding-by-murmur" />

</schema>

如果插入一条数据,要存储到 dn3 还是 dn4 需要配置对应的分片规则。

5.思考用什么分片规则
打开 operatelog 表:

image.png

该 id 是采用了一个分布式 id 生成器,并且是 long 类型的数据。

取模分片可用,得到当前的 id 值,然后模于当前的数量。

范围分片,范围分片指的是 0-500 条记录向第一个界面中传,这里不适合,因为该 id 并不是组件自增的。

枚举分片也不适合,枚举分片主要适用于年龄、状态(如果状态为 1,存储第一个节点,如果状态为 2,存储到第二个节点)

范围求模分片,因为其涉及到范围,所以不适合。

我们要通过分析,找到适合的分片规则。

对当前的案例,可以采用一致性 hash 分片,意味其会根据 hash 算法来决定当前的 id 被分到哪个节点。

6.节点主机中的配置:

部分代码:

//最大连接数、最小连接数、负载均衡策略

<dataHost name="host1" maxCon="100o" minCon="10" balance="o"

writeType="o"dbType="mysq1"dbDriver="native" switchType="1" slaveThreshold="100">

<heartbeat>select user()</heartbeat>

<writeHosthost="hostM1" ur1="192.168.192.158:3306"user="root" password="itcast"> </writeHost>

</ dataHost>

当前第一个节点对应的是 158:3306

第二个节点对应 159:3306

第三个节点对应 160:3306

第四个节点对应 161:3306

这就是当前对核心的配置文件的分析,这份配置文件中的逻辑库、逻辑表这一部分的配置完全根据我们之前分析的架构图。

相关文章
|
7天前
|
存储 监控 安全
数据库多实例的部署与配置方法
【10月更文挑战第23天】数据库多实例的部署和配置需要综合考虑多个因素,包括硬件资源、软件设置、性能优化、安全保障等。通过合理的部署和配置,可以充分发挥多实例的优势,提高数据库系统的运行效率和可靠性。在实际操作中,要不断总结经验,根据实际情况进行调整和优化,以适应不断变化的业务需求。
|
3天前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
5天前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
16 2
|
6天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
40 2
|
20天前
|
前端开发 Java 数据库连接
javamvc配置,增删改查,文件上传下载。
【10月更文挑战第4天】javamvc配置,增删改查,文件上传下载。
33 1
|
22天前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
54 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
8天前
|
SQL 关系型数据库 数据库连接
"Nacos 2.1.0版本数据库配置写入难题破解攻略:一步步教你排查连接、权限和配置问题,重启服务轻松解决!"
【10月更文挑战第23天】在使用Nacos 2.1.0版本时,可能会遇到无法将配置信息写入数据库的问题。本文将引导你逐步解决这一问题,包括检查数据库连接、用户权限、Nacos配置文件,并提供示例代码和详细步骤。通过这些方法,你可以有效解决配置写入失败的问题。
18 0
|
21天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
55 3
Mysql(4)—数据库索引
|
9天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
41 4
|
14天前
|
存储 关系型数据库 MySQL
如何在MySQL中创建数据库?
【10月更文挑战第16天】如何在MySQL中创建数据库?

热门文章

最新文章