MySQL-分库分表详解(七)

这篇具有很好参考价值的文章主要介绍了MySQL-分库分表详解(七)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

♥️作者:小刘在C站

♥️个人主页: 小刘主页 

♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生!

♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏:云计算技术

♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSDN让你我相遇!

前言

上章讲到MySQL-分库分表详解(六)

目录

5.3.7 字符串hash解析算法

1). 介绍

 2). 配置

 3). 测试

5.3.8 按天分片算法

1). 介绍

 2). 配置

 3). 测试

5.3.9 自然月分片

1). 介绍

​编辑

 2). 配置

 3). 测试

6 MyCat管理及监控

6.1 MyCat原理

6.2 MyCat管理

6.3 MyCat-eye

 6.3.1 介绍

6.3.2 安装

6.3.3 访问

 6.3.4 配置

 6.3.5 测试

A. 性能监控

 B. 物理节点

 C. SQL统计

​编辑

 D. SQL表分析

 E. SQL监控

​编辑

 F. 高频SQL


5.3.7 字符串hash解析算法

1). 介绍

截取字符串中的指定位置的子字符串 , 进行 hash 算法, 算出分片。
MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库
 2). 配置
schema.xml 中逻辑表配置:
<!-- 字符串hash解析算法 -->
<table name="tb_strhash" dataNode="dn4,dn5" rule="sharding-by-stringhash" />
schema.xml 中数据节点配置:
<dataNode name="dn4" dataHost="dhost1" database="itcast" />
<dataNode name="dn5" dataHost="dhost2" database="itcast" />
rule.xml 中分片规则配置:
<tableRule name="sharding-by-stringhash">
<rule>
<columns>name</columns>
<algorithm>sharding-by-stringhash</algorithm>
</rule>
</tableRule>
<function name="sharding-by-stringhash"
class="io.mycat.route.function.PartitionByString">
<property name="partitionLength">512</property> <!-- zero-based -->
<property name="partitionCount">2</property>
<property name="hashSlice">0:2</property>
</function>
分片规则属性含义:
MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库

 示例说明:

MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库

 3). 测试
配置完毕后,重新启动 MyCat ,然后在 mycat 的命令行中,执行如下 SQL 创建表、并插入数据,查看数据分布情况。
 
create table tb_strhash(
name varchar(20) primary key,
content varchar(100)
)engine=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO tb_strhash (name,content) VALUES('T1001', UUID());
INSERT INTO tb_strhash (name,content) VALUES('ROSE', UUID());
INSERT INTO tb_strhash (name,content) VALUES('JERRY', UUID());
INSERT INTO tb_strhash (name,content) VALUES('CRISTINA', UUID());
INSERT INTO tb_strhash (name,content) VALUES('TOMCAT', UUID());

5.3.8 按天分片算法

1). 介绍
按照日期及对应的时间周期来分片。
MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库
 2). 配置
schema.xml 中逻辑表配置:
<!-- 按天分片 -->
<table name="tb_datepart" dataNode="dn4,dn5,dn6" rule="sharding-by-date" />
schema.xml 中数据节点配置:
<dataNode name="dn4" dataHost="dhost1" database="itcast" />
<dataNode name="dn5" dataHost="dhost2" database="itcast" />
<dataNode name="dn6" dataHost="dhost3" database="itcast" />
rule.xml 中分片规则配置:
<tableRule name="sharding-by-date">
<rule>
<columns>create_time</columns>
<algorithm>sharding-by-date</algorithm>
</rule>
</tableRule>
<function name="sharding-by-date"
class="io.mycat.route.function.PartitionByDate">
<property name="dateFormat">yyyy-MM-dd</property>
<property name="sBeginDate">2022-01-01</property>
<property name="sEndDate">2022-01-30</property>
<property name="sPartionDay">10</property>
</function>
<!--
从开始时间开始,每10天为一个分片,到达结束时间之后,会重复开始分片插入
配置表的 dataNode 的分片,必须和分片规则数量一致,例如 2022-01-01 到 2022-12-31 ,每
10天一个分片,一共需要37个分片。
-->
分片规则属性含义:
MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库
 3). 测试
配置完毕后,重新启动 MyCat ,然后在 mycat 的命令行中,执行如下 SQL 创建表、并插入数据,查看数据分布情况。
create table tb_datepart(
id bigint not null comment 'ID' primary key,
name varchar(100) null comment '姓名',
create_time date null
);
insert into tb_datepart(id,name ,create_time) values(1,'Tom','2022-01-01');
insert into tb_datepart(id,name ,create_time) values(2,'Cat','2022-01-10');
insert into tb_datepart(id,name ,create_time) values(3,'Rose','2022-01-11');
insert into tb_datepart(id,name ,create_time) values(4,'Coco','2022-01-20');
insert into tb_datepart(id,name ,create_time) values(5,'Rose2','2022-01-21');
insert into tb_datepart(id,name ,create_time) values(6,'Coco2','2022-01-30');
insert into tb_datepart(id,name ,create_time) values(7,'Coco3','2022-01-31');

5.3.9 自然月分片

1). 介绍
使用场景为按照月份来分片 , 每个自然月为一个分片。
MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库
 2). 配置
schema.xml 中逻辑表配置:
<!-- 按自然月分片 -->
<table name="tb_monthpart" dataNode="dn4,dn5,dn6" rule="sharding-by-month" /> 
schema.xml 中数据节点配置:
<dataNode name="dn4" dataHost="dhost1" database="itcast" />
<dataNode name="dn5" dataHost="dhost2" database="itcast" />
<dataNode name="dn6" dataHost="dhost3" database="itcast" />
rule.xml中分片规则配置:    
<tableRule name="sharding-by-month">
<rule>
<columns>create_time</columns>
<algorithm>partbymonth</algorithm>
</rule>
</tableRule>
<function name="partbymonth" class="io.mycat.route.function.PartitionByMonth">
<property name="dateFormat">yyyy-MM-dd</property>
<property name="sBeginDate">2022-01-01</property>
<property name="sEndDate">2022-03-31</property>
</function>
<!--
从开始时间开始,一个月为一个分片,到达结束时间之后,会重复开始分片插入
配置表的 dataNode 的分片,必须和分片规则数量一致,例如 2022-01-01 到 2022-12-31 ,一
共需要12个分片。
-->
     
分片规则属性含义:
MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库
 3). 测试
配置完毕后,重新启动 MyCat ,然后在 mycat 的命令行中,执行如下 SQL 创建表、并插入数据,查看数据分布情况。
create table tb_monthpart(
id bigint not null comment 'ID' primary key,
name varchar(100) null comment '姓名',
create_time date null
);
insert into tb_monthpart(id,name ,create_time) values(1,'Tom','2022-01-01');
insert into tb_monthpart(id,name ,create_time) values(2,'Cat','2022-01-10');
insert into tb_monthpart(id,name ,create_time) values(3,'Rose','2022-01-31');
insert into tb_monthpart(id,name ,create_time) values(4,'Coco','2022-02-20');
insert into tb_monthpart(id,name ,create_time) values(5,'Rose2','2022-02-25');
insert into tb_monthpart(id,name ,create_time) values(6,'Coco2','2022-03-10');
insert into tb_monthpart(id,name ,create_time) values(7,'Coco3','2022-03-31');
insert into tb_monthpart(id,name ,create_time) values(8,'Coco4','2022-04-10');
insert into tb_monthpart(id,name ,create_time) values(9,'Coco5','2022-04-30');

6 MyCat管理及监控

6.1 MyCat原理

MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库

 MyCat中,当执行一条SQL语句时,MyCat需要进行SQL解析、分片分析、路由分析、读写分离分析等操作,最终经过一系列的分析决定将当前的SQL语句到底路由到那几个(或哪一个)节点数据库,数据库将数据执行完毕后,如果有返回的结果,则将结果返回给MyCat,最终还需要在MyCat中进行结果合并、聚合处理、排序处理、分页处理等操作,最终再将结果返回给客户端。

而在 MyCat 的使用过程中, MyCat 官方也提供了一个管理监控平台 MyCat-Web MyCat-eye )。Mycat-web Mycat 可视化运维的管理和监控平台,弥补了 Mycat 在监控上的空白。帮 Mycat分担统计任务和配置管理任务。 Mycat-web 引入了 ZooKeeper 作为配置中心,可以管理多个节点。 Mycat-web 主要管理和监控 Mycat 的流量、连接、活动线程和内存等,具备 IP 白名单、邮 件告警等模块,还可以统计 SQL 并分析慢 SQL 和高频 SQL 等。为优化 SQL 提供依据。

6.2 MyCat管理

Mycat 默认开通 2 个端口,可以在 server.xml 中进行修改。
8066 数据访问端口,即进行 DML DDL 操作。
9066 数据库管理端口,即 mycat 服务管理控制功能,用于管理 mycat 的整个集群状态
连接 MyCat 的管理控制台:
mysql -h 192.168.200.210 -p 9066 -uroot -p123456

6.3 MyCat-eye

 6.3.1 介绍

Mycat-web(Mycat-eye) 是对 mycat-server 提供监控服务,功能不局限于对 mycat-server 使
用。他通过 JDBC 连接对 Mycat Mysql 监控,监控远程服务器 ( 目前仅限于 linux 系统 ) cpu 、内
存、网络、磁盘。
Mycat-eye 运行过程中需要依赖 zookeeper ,因此需要先安装 zookeeper

6.3.2 安装

1). zookeeper 安装
2). Mycat-web 安装

6.3.3 访问

http://192.168.200.210:8082/mycat

MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库

 6.3.4 配置

1). 开启 MyCat 的实时统计功能 (server.xml)
<property name="useSqlStat">1</property> <!-- 1为开启实时统计、0为关闭 -->
2). Mycat 监控界面配置服务地址
MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库

 6.3.5 测试

配置好了之后,我们可以通过 MyCat 执行一系列的增删改查的测试,然后过一段时间之后,打开
mycat-eye 的管理界面,查看 mycat-eye 监控到的数据信息。

A. 性能监控

MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库

 B. 物理节点

MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库

 C. SQL统计

MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库

 D. SQL表分析

MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库

 E. SQL监控

MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库

 F. 高频SQL

MySQL-分库分表详解(七),MySQL入门到实战,mysql,数据库

 

♥️关注,就是我创作的动力

♥️点赞,就是对我最大的认可

♥️这里是小刘,励志用心做好每一篇文章,谢谢大家文章来源地址https://www.toymoban.com/news/detail-565539.html

到了这里,关于MySQL-分库分表详解(七)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL-分库分表详解(二)

    ♥️ 作者:小刘在C站 ♥️ 个人主页:  小刘主页  ♥️ 努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏: 云计算技术 ♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSD

    2024年02月16日
    浏览(28)
  • MySQL-分库分表详解(三)

    ♥️ 作者:小刘在C站 ♥️ 个人主页:  小刘主页  ♥️ 努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏: 云计算技术 ♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSD

    2024年02月12日
    浏览(30)
  • MySQL-分库分表详解(七)

    ♥️ 作者:小刘在C站 ♥️ 个人主页:  小刘主页  ♥️ 努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏: 云计算技术 ♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSD

    2024年02月16日
    浏览(24)
  • MySQL-分库分表详解(五)

    ♥️ 作者:小刘在C站 ♥️ 个人主页:  小刘主页  ♥️ 努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏: 云计算技术 ♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSD

    2024年02月13日
    浏览(35)
  • MySQL-分库分表详解(一)

    ♥️ 作者:小刘在C站 ♥️ 个人主页:  小刘主页  ♥️ 努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏: 云计算技术 ♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSD

    2024年02月12日
    浏览(28)
  • MySQL-分库分表详解(四)

    ♥️ 作者:小刘在C站 ♥️ 个人主页:  小刘主页  ♥️ 努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏: 云计算技术 ♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSD

    2024年02月12日
    浏览(33)
  • 【进阶篇】MySQL分库分表详解

    假设有一个电商网站,随着用户量和订单量的增加,单一数据库难以承载如此庞大的数据量,查询速度也逐渐降低,这时就需要进行分库分表。 我们知道数据库连接是有限的。在高并发的场景下,大量请求访问数据库,MySQL单机是扛不住的!当前非常火的微服务架构出现,就

    2024年02月10日
    浏览(40)
  • MySql详解(七)--分库分表篇

    使用背景 当【表的数量】达到了几百上千张表时,众多的业务模块都访问这个数据库,压力会比较大,考虑对其进行分库。 当【表的数据】达到了几千万级别,在做很多操作都比较吃力,所以,考虑对其进行分库或者分表 数据切分(sharding)方案 数据的切分(Sharding)根据其

    2024年02月03日
    浏览(29)
  • Jmeter(七) - 从入门到精通 - 建立数据库测试计划实战<MySQL数据库>(详解教程)

    1.简介   在实际工作中,我们经常会听到数据库的性能和稳定性等等,这些有时候也需要测试工程师去评估和测试,上一篇文章主要介绍了jmeter连接和创建数据库测试计划的过程,在文中通过示例和代码非常详细地介绍给大家,希望对各位小伙伴和童鞋们的学习或者工作具有一

    2024年02月13日
    浏览(44)
  • 【分库分表】基于mysql+shardingSphere的分库分表技术

    目录 1.什么是分库分表 2.分片方法 3.测试数据 4.shardingSphere 4.1.介绍 4.2.sharding jdbc 4.3.sharding proxy 4.4.两者之间的对比 5.留个尾巴 分库分表是一种场景解决方案,它的出现是为了解决一些场景问题的,哪些场景喃? 单表过大的话,读请求进来,查数据需要的时间会过长 读请求过

    2024年03月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包