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

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

相关文章
|
1月前
|
存储 监控 安全
数据库多实例的部署与配置方法
【10月更文挑战第23天】数据库多实例的部署和配置需要综合考虑多个因素,包括硬件资源、软件设置、性能优化、安全保障等。通过合理的部署和配置,可以充分发挥多实例的优势,提高数据库系统的运行效率和可靠性。在实际操作中,要不断总结经验,根据实际情况进行调整和优化,以适应不断变化的业务需求。
|
22天前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
1月前
|
消息中间件 资源调度 关系型数据库
如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理
本文介绍了如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理。主要内容包括安装Debezium、配置Kafka Connect、创建Flink任务以及启动任务的具体步骤,为构建实时数据管道提供了详细指导。
75 9
|
1月前
|
安全 Nacos 数据库
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改。本文详细探讨了这一问题的原因及解决方案,包括限制公网访问、使用HTTPS、强化数据库安全、启用访问控制、监控和审计等步骤,帮助开发者确保服务的安全运行。
45 3
|
1月前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
1月前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
51 2
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
135 2
|
11天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
80 15
|
4天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
11天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。