数据库中间件-mycat

一、概述

1. 数据库中间件

中间件:是一类连接软件组件和应用的计算机软件,以便于软件各部件之间的沟通。

例子:Tomcat- > web中间件。

数据库中间件:连接 java 应用程序和数据库

例子:mycat 属于数据库中间件

2. 为什么需要 Mycat?

在这里插入图片描述

单体应用中,java 应用和单台或多台 mysql 过度耦合,会有以下缺点:

​ ① Java与数据库紧耦合 --> Mycat

​ ② 高访问量高并发对数据库的压力 --> 读写分离 mycat

​ ③ 读写请求数据不一致 --> mysql 主从复制

3. 数据库中间件对比

在这里插入图片描述

二、mycat 作用

1. 读写分离

在这里插入图片描述

2. 分库分表[数据分片]

垂直拆分(分库)、水平拆分(分表)、垂直+水平拆分(分库分表)

在这里插入图片描述

3. 多数据源整合

在这里插入图片描述

三、mycat 原理

Mycat 的原理中最重要的一个动词是**“拦截”,它拦截了用户发送过来的SQL 语句**,首先对 SQL 语句做了一些特定的分析:如==分片分析、路由分析、读写分离分析、缓存分析==等,然后将此SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。

这种方式把数据库的分布式从代码中解耦出来,程序员察觉不出来后台使用Mycat还是MySQL

在这里插入图片描述

四、安装

在这里插入图片描述

在这里插入图片描述

解压压缩包

在这里插入图片描述

递归拷贝 解压缩后的文件夹 到 local 目录

cp -r mycat /usr/local

五、启动

修改 server.xml

在这里插入图片描述

修改schema.xml
在这里插入图片描述

验证数据库访问情况

在这里插入图片描述

启动 mycat
在这里插入图片描述

六、登录

登录后台管理窗口

mysql -umycat -p123456 -P 9066 -h 192.168.140.128

登录数据管理窗口

mysql -umycat -p123456 -P 8066 -h 192.168.140.128

七、读写分离

1. 一主一从

在这里插入图片描述

Mysql 主从复制原理

在这里插入图片描述

biglog 日在这里插入图片描述

志三种格式

主机配置

#修改配置文件:vim /etc/my.cnf

#主服务器唯一
IDserver-id=1

#启用二进制日志
log-bin=mysql-bin

# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema

#设置需要复制的数据库
binlog-do-db=需要复制的主数据库名字

#设置logbin格式
binlog_format=STATEMENT

从机配置

#修改配置文件:vim /etc/my.cnf

#从服务器唯一
IDserver-id=2

#启用中继日志
relay-log=mysql-relay

主机、从机重启 Mysql 服务,都关闭防火墙

# 重启 mysql
systemctl restart mysqld

# 查看 mysql 服务状态
systemctl status mysqld

# 查看防火墙状态
systemctl status firewalld

在主机创建账户并授权 slave

#在主机MySQL里执行授权命令
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123123';

查询 master 状态

show master status

在这里插入图片描述

从机配置要复制的主机

在这里插入图片描述

主机建库、建表、插记录、从机复制

在这里插入图片描述

停止从机服务复制功能

stop slave

重新配置主从

stop slave
# 重置 master
reset master

2. 读写分离

在这里插入图片描述

balance 属性

在这里插入图片描述

启动 mycat

./ mycat console

验证 读写分离

在这里插入图片描述

3. 双主双从

在这里插入图片描述

1. 双主机配置

Master 1 配置

# 修改配置文件:vim /etc/my.cnf
#主服务器唯一
IDserver-id=1
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库
binlog-do-db=需要复制的主数据库名字
#设置logbin格式
binlog_format=STATEMENT
# 在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates 
#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
auto-increment-increment=2
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=1

Master 2 配置

# 修改配置文件:vim /etc/my.cnf
#主服务器唯一ID
server-id=3
#启用二进制日志
log-bin=mysql-bin
#设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库
binlog-do-db=需要复制的主数据库名字
#设置logbin格式
binlog_format=STATEMENT
# 在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates 
#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
auto-increment-increment=2 
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=2

2. 双从机配置

Slave1 配置

#修改配置文件:vim /etc/my.cnf
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay

Slave2 配置

# 修改配置文件:vim /etc/my.cnf
#从服务器唯一ID
server-id=4
#启用中继日志
relay-log=mysql-relay

3. 双主机,双从机重启 mysql 服务

4. 主从机都关闭防火墙

5. 在两台主机上执行授权命令

#在主机MySQL里执行授权命令
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123123';
#查询Master1的状态
show master status;

在这里插入图片描述

6. 从机上配置需要复制的主机

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

7. 两个主机互相复制

在这里插入图片描述

8. Master1主机新建库、新建表、insert记录,Master2和从机复制

在这里插入图片描述

9. 停止从服务复制功能

stop slave

10. 修改Mycat的配置文件schema.xml

修改的balance属性,通过此属性配置读写分离的类型
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

启动mycat验证读写分离

在这里插入图片描述

Master1、Master2互做备机,负责写的主机宕机,备机切换负责写操作,保证数据库读写分离高可用性

八、垂直拆分 - 分库

一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类,分布到不同的数据库上面,这样也就将数据或者说压力分担到不同的库上面,如下图

在这里插入图片描述

1. 如何划分表

一个问题:在两台主机上的两个数据库中的表,能否关联查询?

答案:不可以关联查询。

分库的原则:有紧密关联关系的表应该在一个库里,相互没有关联关系的表可以分到不同的库里。

比如:客户表分在一个数据库,另外三张都需要关联查询,分在另外一个数据库

2. 实现分库

修改 schema 配置文件

在这里插入图片描述

新增两个空白库

在这里插入图片描述

启动 Mycat

访问 Mycat 进行分库

在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值