相关推荐recommended
MySQL-分库分表详解(七)
作者:mmseoamin日期:2023-12-14

♥️作者:小刘在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-分库分表详解(七),第1张
 2). 配置
schema.xml 中逻辑表配置:

 
   
   schema.xml 
   中数据节点配置:  
   
   
   
   

rule.xml 中分片规则配置:


name
sharding-by-stringhash



512 
2
0:2
分片规则属性含义: MySQL-分库分表详解(七),第2张

 示例说明:

MySQL-分库分表详解(七),第3张

 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-分库分表详解(七),第4张
 2). 配置
schema.xml 中逻辑表配置:

schema.xml 中数据节点配置:


rule.xml 中分片规则配置:


create_time
sharding-by-date



yyyy-MM-dd
2022-01-01
2022-01-30
10

分片规则属性含义: MySQL-分库分表详解(七),第5张
 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-分库分表详解(七),第6张
 2). 配置
schema.xml 中逻辑表配置:

schema.xml 中数据节点配置:


rule.xml中分片规则配置:    


create_time
partbymonth



yyyy-MM-dd
2022-01-01
2022-03-31

      分片规则属性含义: MySQL-分库分表详解(七),第7张
 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-分库分表详解(七),第8张

 在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-分库分表详解(七),第9张

 6.3.4 配置

1). 开启 MyCat 的实时统计功能 (server.xml)
1 
2). 在 Mycat 监控界面配置服务地址 MySQL-分库分表详解(七),第10张

 6.3.5 测试

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

A. 性能监控

MySQL-分库分表详解(七),第11张

 B. 物理节点

MySQL-分库分表详解(七),第12张

 C. SQL统计

MySQL-分库分表详解(七),第13张

 D. SQL表分析

MySQL-分库分表详解(七),第14张

 E. SQL监控

MySQL-分库分表详解(七),第15张

 F. 高频SQL

MySQL-分库分表详解(七),第16张

 

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

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

♥️这里是小刘,励志用心做好每一篇文章,谢谢大家