Mycat 具体介绍及入门实战,办理数据库性能问题
一、根本原理1、数据分片
(1)、水中分片
Mycat 将一个大表的数据按照肯定的规则拆分成多个小表,分布在差异的数据库节点上。比方,可以根据某个字段的值举行哈希取模,将数据匀称的分布到差异的节点上。
这样做的好处是可以将数据分散到多个节点上,提高查询和写入的性能,同时也可以突破单个数据库的存储和处理本领限定。
(2)、垂直分片
将一个数据库中的差异表按照业务逻辑举行拆分,分别存储在差异的数据库节点上。
好比将用户的信息表和订单表分别存储在差异的节点上,这样可以根据业务的需求独立的对差异的表举行扩展和优化
2、中间件层
(1)、连担当理
Mycat 作为中间件,接收来自应用程序的数据库连接哀求,并将这些哀求转发到后端的真实数据库节点上。
它维护着与应用程序和数据库节点的连接池,提高连接的复用率,减少连接创建和关闭的开销
(2)、SQL解析
当接收到SQL哀求时,Mycat 会对SQL 语句举行解析,识别出查询的表、字段、条件等信息
根据解析结果和设置的分库分表规则,确定SQL语句应该在那些数据库节点上实验。
(3)、SQL路由
降解析后的SQL语句转发到相应的数据库节点上实验,如果是查询语句,Mycat 会从多个节点上获取结果,并举行合并和排序后返回给应用程序。
如果是写入语句,Mycat会根据分库分表规则降数据写入到相应的节点上。
(4)、结果合并
对于从多个数据库节点返回的查询结果,Mycat 会举行合并和排序 ,使得应用程序看到的结果就像从一个单一的数据库中查询出来的一样。
3、高可用和负载均衡
(1)、高可用
Mycat 可以设置多个节点组成集群,当某个节点出现故障时,其他节点可以担当其工作,包管系统的高可用性。
可以通过主从复制、心跳检测等机制实现故障自动切换。
(2)、负载均衡
Mycat 可以根据设置的计谋将哀求匀称地分发到差异的数据库节点上,实现负载均衡,避免某个节点负载过高。
创建的负载均衡计谋有,轮询、随机、权重等。
二、基础入门实战
1、摆设环境
安装mycat 依赖的jdk环境,以及对应的MySQL客户端
具体安装jdk的方法请看:不依赖zookeeper的Kafka集群_kafka下载哪个版本-CSDN博客
安装MySQL数据库客户端,这里是基于原有的yum源仓库,直接举行下载的
https://i-blog.csdnimg.cn/direct/b2304978d82641c28352e60eea347610.png
2、摆设Mycat
下载安装包:| MYCAT官方网站—中国第一开源分布式数据库中间件
将预备好的mycat二进制安装包解压到指定目次下,并使其命令全局可用,设置对应的环境变量
tar -xf Mycat-server.tar.gz -C /usr/local/ https://i-blog.csdnimg.cn/direct/af377126555c45e9af536498f91c441b.png
vim /etc/profile.d/mycat.sh
https://i-blog.csdnimg.cn/direct/683765760f4e4d239f0cdf2285567960.png
source /etc/profile.d/mycat.sh
运行使其生效
https://i-blog.csdnimg.cn/direct/7086beecc4a64dbe8f3e1da9d52c6861.png
3、先开启mycat 服务,预运行一下
mycat start https://i-blog.csdnimg.cn/direct/7b6f8b4daee144848c5be3d94ddfeb84.png
开启乐成
4、更改其主设置文件和schema.xml 文件
vim conf/server.xml 将端口改为3306
https://i-blog.csdnimg.cn/direct/08b56ad5f75c4004b57e942c1d4505d7.png
基于root 用户关联MySQL数据库,以及对应的密码,TESTDB 为对外显示的数据库名
https://i-blog.csdnimg.cn/direct/5550bf31778e46598bd1ba8750646327.png
vim conf/schema.xml 前端显示数据库
https://i-blog.csdnimg.cn/direct/fe03751588294522bd5581f2fade5a8f.png
后端关联数据库
https://i-blog.csdnimg.cn/direct/7eaee80f7b6f40198533dd66229d9e60.png
心跳检测,读写节点分离
https://i-blog.csdnimg.cn/direct/fbbb8d29c0aa472bb5562b5853a0c35a.png
在MySQL数据中举行设置root 用户,使其可以被其他主机访问登录
其密码一般使用兼容老版本的方式老举行设置
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
select user,host,authentication_string from mysql.user; https://i-blog.csdnimg.cn/direct/73535bd6ceac4253a91bb85fcd168b5c.png
重启mycat服务
mycat restart 5、举行验证
基于中间件,实现分库分表的功能
https://i-blog.csdnimg.cn/direct/bc1796d0a51442c5bc6aeb9ed0c7ddf4.png
前端显示的数据库
https://i-blog.csdnimg.cn/direct/68eba91ddf4b4a12953c547c0f3dfa2d.png
库中的内容是关联的后端数据库test中的数据
https://i-blog.csdnimg.cn/direct/a8044579f2764e2b985a69f08169b12a.png
验证其读数据信息来自于后端哪一个MySQL数据库
https://i-blog.csdnimg.cn/direct/f10cb3dfeeb549e78b7bffdf92047df5.png
其所读的数据轮替从后端从服务器中获取
6、开启后端主服务器的通用日志功能,检察其是否被触发日志信息
在设置文件中添加 general_log
https://i-blog.csdnimg.cn/direct/f30ec03c6e8242e089c6eab237d472f0.png
重启服务举行检察
查询通用日志地点位置
select @@general_log_file;
https://i-blog.csdnimg.cn/direct/767072a07cfa407a8b5f43165112620f.png
可以看到,每过10秒,举行一次的心跳检测
https://i-blog.csdnimg.cn/direct/35129d8022594f3a922baa8d9f2a0ce3.png
7、当在mycat中对数据举行更改时,检察日志
https://i-blog.csdnimg.cn/direct/d5ad7143d9574826a4989ccb038bcbbf.png
触发主MySQL数据库的通用日志信息。
可以看出,其写数据时,只会在后端主数据库中写入,而读取数据,是从其他两台从数据库中获取的数据
https://i-blog.csdnimg.cn/direct/0fac90f4aaa44072bb6e316bcc671a0a.png
8、将后端两台从服务器停止服务,然后访问
先将从主机node1停服
https://i-blog.csdnimg.cn/direct/4a67e66aa1bb44c6980af378b5349efd.png
Mycat只能从120主机读取数据信息
https://i-blog.csdnimg.cn/direct/08a0ae59b2264edb8bdeb57fcde4ac2a.png
当node2/120,主机也停止服务时
https://i-blog.csdnimg.cn/direct/06f5fb3f3a6b48308642b3d093ae5652.png
这时,mycat读写操作均是从node主机中(主MySQL数据库)中获取的数据
https://i-blog.csdnimg.cn/direct/036544196bc648bbb0ad6d0f2c92288a.png
从主MySQL服务器的通用日志中可以检察到,其mycat在其所代理的后端所有read服务器全部瘫痪时,将向主数据库中发起read数据调用
https://i-blog.csdnimg.cn/direct/6a3efae354774c38917ecbcdcb49e31b.png
当两台从数据库重新启动时,其访问读数据又会重新回归到从数据库中
乐成的实现了MySQL数据的读写分离,分库分表功能
https://i-blog.csdnimg.cn/direct/eba09a658aaf4c62bce1ea98b0ba83f5.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]