Mysql - 读写分离

文章介绍了MySQL读写分离的概念,其作用在于分担主服务器压力、提高响应速度和系统可用性。中间件如MySQLRouter用于实现这一功能,但需注意用户权限控制以防止数据不一致。实验展示了如何配置MySQLRouter进行读写分离操作。

目录

Mysql读写分离是什么,作用是什么?

什么是中间件?

参考文档:MySQL Router实现MySQL的读写分离 - 骏马金龙 - 博客园 (cnblogs.com)

实现简易的读写分离操作实验:

实验简易展示图:

步骤:

读写分离的关键点:


Mysql读写分离是什么,作用是什么?

MySQL读写分离是指将MySQL数据库的读和写操作分别分配给不同的服务器来执行的一种技术手段。在读写分离的架构中,通常会有一个主服务器(Master)用于处理所有的写操作,而多个从服务器(Slave)则用于处理读操作。主服务器负责处理数据更新和写入等操作,而从服务器则负责处理查询和读取操作。

MySQL读写分离的作用包括以下几点:

  1. 分担主服务器压力:在读写分离的架构中,主服务器只需要处理写操作,而读操作则由从服务器来处理,这样可以有效地减轻主服务器的负载,提高系统的整体性能。

  2. 提高系统响应速度:由于从服务器只负责读操作,因此它们通常采用较为轻量级的配置,能够更快速地响应读请求,从而提高了系统响应速度。

  3. 提供高可用性:如果主服务器发生故障,从服务器可以自动切换为主服务器,从而保证系统的可用性。此外,读写分离的架构还可以通过多个从服务器来提高系统的可扩展性和可靠性。

总之,MySQL读写分离在提高系统性能、可扩展性和可靠性方面都具有重要作用,尤其适用于读操作比较频繁的应用场景。但它也需要考虑一些问题,例如数据同步、读写分离的实现和维护成本等等。

什么是中间件?

中间件(Middleware)是指一种位于操作系统和应用程序之间的软件层,它提供一些公共服务和功能,以便应用程序能够更容易地开发、部署、运行和管理。中间件是一种基础软件,它为应用程序提供了一些通用性的功能和服务,以便开发人员能够更加高效地进行开发和管理。中间件广泛应用于各种企业级应用系统、云计算平台、物联网和大数据等领域。

我们再做读写分离的时候就会使用到中间件,如MySQLrouter、Mycat、weblogic等

MySQLrouter: 

参考文档:MySQL Router实现MySQL的读写分离 - 骏马金龙 - 博客园 (cnblogs.com)

实现简易的读写分离操作实验:

实验简易展示图:

步骤:

1、先在中间件上安装Mysql-router:MySQL :: Download MySQL Router

安装Mysql-router并解压:

 所在目录:

打开配置文件添加配置:(不要添加注释)

(根据自己的IP地址配置)(不要加注释

[routing:read_write]
bind_address = 192.168.2.215        #是mysql-router服务器的IP地址
bind_port= 7001                     #自己的端口号
destinations = 192.168.2.149:3306   #设置目的机器IP地址,可以填master的IP,端口为mysqld运行的端口
mode = read-write                   #设定的模式是既可以读也可以写
max_connections = 65535
max_connect_errors = 100
client_connect_timeout = 9

[routing:read_only]
bind_address = 192.168.2.215        #是mysql-router服务器的IP地址
bind_port= 7002                     #自己的端口号
destinations = 192.168.2.150:3306   #设置目的机器IP地址,可以填slave的IP,端口为mysql的端口
mode = read-only                    #设定的模式是只可以读不能写
max_connections = 65535
max_connect_errors = 100
client_connect_timeout = 9

如果出现如下错误,请将注释删除掉:(查看日志/var/log/mysqlrouter/mysqlrouter.log

成功刷新mysqlrouter服务

查看端口:

之后我们将Mysql的主从复制搭建好,参考文档:(25条消息) Mysql - 主从复制介绍_Claylpf的博客-优快云博客

我们使用windows上的Navcat进行测试

在master上创建用户testone,并授予全部权限,从而用来测试我们的Mysql服务器是否实现了读写分离 。

连接过程中记得把所有机器的防火墙和selinux都关闭

 

那我们能否建立库呢,答案是能(创建了xxx库)

当我们连接7002端口时,我们还能创建库吗,答案还是能(创建了xxx2库)

 

很明显的看到我通过7002端口的连接也创建了xxx2库,说明我还是能使用写的权限,根本原因是因为我的testone用户是all权限,可以建表查表删表等操作

因此可以看出来我们主要是用户权限的控制,有写权限的用户(testone)走读的通道也可以写

读写分离的关键点

1、其实是用户的权限,让不同的用户连接不同的端口,最后任然要到后端的mysql服务器里去验证是否有读写的权限
2、mysqlrouter只是做了读写的分流,让应用程序去连接不同的端口--》mysqlrouter只是一个分流的工具
3、主要是用户权限的控制,有写权限的用户走读的通道也可以写,读的用户走写的通道只能读

因此我们必须分配好用户的权限,防止出现数据不一致的问题,而且建议读的用户尽量使用读操作的端口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值