(视频:尚硅谷:尚硅谷Mycat核心教程(mycat实战应用)_哔哩哔哩_bilibili)
目录
一.入门概述:
1)是什么:
a:数据库中间件:连接 Java应用程序 和 数据库。
b:为什么要用 Mycat:
-1.java 与 数据库 紧耦合。
-2.高访问量并发访问,对数据库压力。
-3.读写请求数据不一致:读写分离。
2)数据库中间件对比:
3)MyCat 作用、能干什么:
a:读写分离:使用 MyCat,简化直接用 程序 读写分离 操作。
b:数据分片:垂直拆分(分库)、水平拆分(分表)、垂直+水平(分库分表)
c:多数据源整合:
4)MyCat 原理:
a:Mycat 原理中,最重要的一个动词是:“ 拦截 ”:
-1.它拦截用户发送过来的 sql 语句,首先对 SQL 语句做了一些特定的分析:
如:分片分析、路由分析、读写分离分析、缓存分析等。
-2.然后将 此 SQL 发送往后端的真实数据库,并将 返回的结果做适当的处理,最终再返回给用户。
-3.这种方式,把数据库的分布式,从代码中解耦出来。程序员察觉不出来后台使用 MyCat 还是 MySQL。
二.安装启动:
1)安装:
a:rpm 方式,按安装顺序:
b:yum 方式,需要联网:
c:解压后,既可以使用:
-1.上传到:/opt/mycat (放安装包)
-2.解压:tar -zxvf
-3.解压后的,拷贝到:/usr/local/mycat(cp -r )
-4.三个配置文件:
1.schema.xml:定义 逻辑库、表、分片节点等内容。
2.rule.xml:定义分片规则。
3.server.xml:定义用户,以及系统相关变量,如端口等。
d:解压后,编译安装:
2)启动:
a:修改配置文件:
-1.(server.xml):
-2.(schema.xml):
b:验证 数据库能否连通:
-1.(mysql -u root -p -h 114.215.173.88 -P 3306)
c:启动:
-1.控制台启动:./mycat console
-2.后台启动:./mycat start
3)登陆:
a:登陆 后台管理窗口:用于维护 MyCat
-1.( mysql -u mycat -p -h 114.215.173.88 -P 9066)(和登录 Mysql 一样)
b:登陆 数据窗口:常用,用于通过 MyCat 查询数据,访问 Mycat
-1.( mysql -u mycat -p -h 114.215.173.88 -P 8066)
三.搭建读写分离:
0)我们通过 MyCAT 和 MySQL 的主从复制,配合搭建数据库的读写分离,实现 MySQL 的高可用。
1)一主一从:
a:一个主机 用于处理所有写请求,一台从机负责所有读请求。
b:搭建 MySQL 数据库 主从复制。
-1.MySQL 主从复制原理:(从接入点开始复制,和 redis 不同)(有延时性)
-2.(配置看:尚硅谷—高级—MySQL数据库高级_张老师的分享的博客-CSDN博客_尚硅谷mysql)
c:修改 Mycat 的配置文件 shema.xml:
d:启动 MyCAT:
-1.直接访问 MyCAT,
-2.验证 读写分离:
-3.开启读写分离:(配置文件中修改)(设置成 1(双主双从) / 3(单主单从) )(2能看到效果)
-4.
-5.
2)双主双从:
a:
-1.
-2.
-3.
-4.
-5.
b:
-1.
-2.
-3.
-4.
-5.
c:
-1.
-2.
-3.
-4.
-5.
d:
-1.
-2.
-3.
-4.
-5.
3):
a:
b:
c:
d:
4):
a:
b:
c:
d:
四.垂直拆分—分库:
1)构思:
a:一个数据库,由很多表构成,每个表对应着不同的业务,垂直切分是指按照:业务将表进行分类,分不到不同的数据库上面,这也就将数据 或者说 压力,分担到不同的数据库上面:
b:系统被分成了:用户库、订单库、支付库。
c:问题:两台主机上的两个数据库表,能否关联查询? 答案:不可以。一台主机上两个库可以(临时表)。
d:分库的原则:
-1.有紧密关联关系的表,应该在一个库里;相互没有关联关系的表,可以分到不同的库里。
2)配置分库:
a:修改 schema 配置文件:(配置 哪些表,在哪个数据源)
b:新增数据库:
c:启动 MyCAT:(./mycat console)
五.水平拆分—分表:(更复杂)
1)配置分表:
a:分表介绍:
-1.相对于 垂直拆分的 分库来说,水平拆分不是将表做分类,而是按照某个字段的某种规则,来分散到多个库中,每个表,包含一部分数据。
-2.简单来说,我们可以将 数据的水平切分理解为是:按照数据进行的切分,就是将表中的某些行,切分到另一个库,而另外的某些行,又切分到其他的数据库中。
b:配置分表:
-1.选择要拆分的表:MySQL 单表1000万条数据,已经是瓶颈了,会影响查询效率,需要做水平拆分(分表),进行优化。
-2.不同的表,有不同的划分原则。
c:分表字段:
d:修改配置文件:schema.xml
e:修改配置文件:rule.xml
f:在 数据节点 dn2 上,建 orders 表
g:重启 Mycat,让配置生效。
h:访问 Mycat ,实现分片。
-1.
-2.
-3.
-4.
-5.
2)MyCAT 的分片:
a:
-1.
-2.
-3.
-4.
-5.
b:
-1.
-2.
-3.
-4.
-5.
c:
-1.
-2.
-3.
-4.
-5.
d:
-1.
-2.
-3.
-4.
-5.
3)全局序列:
a:
b:
c:
d:
4):
a:
b:
c:
d: