mysql的主从复制(三)读写分离的实现

mysql的读写分离是什么

当数据量增多,单机的数据库不足以支撑业务,需要用到数据库集群。而读写分离,就是将数据库的读和写分离,对应到数据库一般就是主从数据库,一主一从或者一主多从;业务服务器把数据写到主数据库中,读操作都去从库读;主库会同步数据到从库,保证数据的一致性。

在这里插入图片描述

如何实现数据库的读写分离

有专门的独立系统来实现读写分离和数据库连接管理,业务服务器和数据库中间件(代理器)通过SQL协议交流,在业务服务器看起来,数据库中间件就是一个数据库代理一般位于客户端和服务器之间,代理服务器接到客户段的请求通过判断后转发到后端数据库。

读写分离可以用很多软件实现:mysql-proxy 、MyCat 、Amoeba
在这里插入图片描述

实现步骤

实验环境:

server1  主数据库  172.25.2.10
server2  备数据库   172.25.2.11
server3  proxy代理器  172.25.2.254
真机  mariadb 客户端 172.25.2.250

关闭两台主机的防火墙和selinux 

前提是server1和server2的主从复制要做好。基于GTID的主从复制.

在已经做好主从复制的server1上,可以查看二进制日志
在这里插入图片描述在这里插入图片描述
是加密的.

在server2 slave上可以查看中继日志
在这里插入图片描述这几步操作与本篇的读写分离无关。
1.server3 上:

首先应该关掉被占用的3306端口

扫描二维码关注公众号,回复: 9817462 查看本文章
tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/local
cd /usr/local/ 
ln -s mysql-proxy-0.8.5-linux-el6-x86-64bit/ mysql-proxy #软链接便于访问

在这里插入图片描述在这里插入图片描述2.在这里插入图片描述3.查看proxy帮助
在这里插入图片描述4.查看所有帮助
在这里插入图片描述5.查看帮助
在这里插入图片描述6.在server3中建立配置文件目录
在这里插入图片描述编辑配置文件(自己手动新建)

cd /conf
vim mysql-proxy.conf

在这里插入图片描述在这里插入图片描述创建日志目录

mkdir /usr/local/mysql-proxy/log

在这里插入图片描述修改 lua 脚本
在这里插入图片描述
在这里插入图片描述启动 mysql-proxy

在这里插入图片描述发现启动报错
原因是配置文件权限过大

在这里插入图片描述

再启动,正常

在这里插入图片描述查看日志,看到两个节点都加进来了

在这里插入图片描述在 server1(主) 上授权新用户读写权限
在这里插入图片描述在这里插入图片描述创建新的表
在这里插入图片描述在这里插入图片描述在物理机上打开一个 shell 来连接数据库,首先应该安装mariadb
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述mariadb安装完成,接下来连接代理server3
在这里插入图片描述在server3代理器上查看进程
在这里插入图片描述在这里插入图片描述在这里插入图片描述在 server3 上看到连接已经建立

在物理机上再打开一个 shell 来连接数据库
在这里插入图片描述
在server3上查看还是只看到一个数据库服务器

==
在物理机上再打开一个 shell 来连接数据库

在这里插入图片描述再到 server3 上查看,这次还连接到了 server2,说明读写分离启用’
在这里插入图片描述测试读写分离
1.在物理机上插入数据
在这里插入图片描述在这里插入图片描述
发现 server1 和 server2 都能看到,看不出读写分离,因为存在主从复制
在这里插入图片描述在这里插入图片描述现在到 server2 (从库)上关闭复制

在这里插入图片描述这时再在物理机上插入数据
在这里插入图片描述在这里插入图片描述
发现插入的数据看不到,但是在server1上可以看到,这就说明了它在读的时候读的是server2 上的数据,而写操作却写在了 server1 上

在这里插入图片描述在这里插入图片描述开启serevr2(从)
在这里插入图片描述在客户端上可以读到之前写的数据
在这里插入图片描述在这里插入图片描述

发布了264 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45649763/article/details/104740695
今日推荐