mysql读写分离

一.mysql读写分离

1.1 原理

在这里插入图片描述

1.2 读写分离分类

1.2.1 基于程序代码内部实现

  • 在代码中根据select、insert进行路由分类,这类方法也是目前生产环境应用广泛的,优点是性能较好,因为
    在程序代码中实现,不需要增加额外的设备作为硬件开支;缺点是需要开发人员来实现,运维人员无从下手。

1.2.2 基于中间代理层实现

代理一般位于客户端和服务器之间,代理服务器接受到客户端的请求后通过判断后转发到后端数据库,有二个代表性程序
◆MySQL-Proxy。 ----MySQL的开源项目,通过自带的lua脚本进行SQL判断,MySQL官方不建议用这个在生产环境中
◆Amoeba(变形虫) ----由陈思儒开发,曾就职于阿里巴巴,该程序由Java语言开发,阿里将其用于生产环境
但是它不支持事物和存储过程。

2.1 实验案例

!接着前面的·主从复制的实验继续,只有主从复制能成功实现了,才能进行读写分离的操作。

##配置MySQL读写分离. 20.0.0.19 ##

2.1.1 卸载原有的java环境

java -version //java版本 1.8.0_181的 有点高
openjdk version “1.8.0_181”
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

rpm -qa |grep java //把关于java环境的文件过滤出来并且删除

2.1.2安装JDK

上传JDK到opt目录
cd /opt
[root@localhost opt]# tar xzvf jdk-8u144-linux-x64.tar.gz
[root@localhost opt]# cp -rv jdk1.8.0_144/ /usr/local/java

[root@localhost opt]# vi /etc/profile //主配置文件
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export PATH=$PATH:/usr/local/java/bin
export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib

source /etc/profile //刷新
java -version //查看版本

在这里插入图片描述

在这里插入图片描述

2.1.3 安装amoeba

yum -y install unzip

[root@localhost opt]# unzip amoeba-mysql-3.0.5-RC-distribution.zip -d /usr/local/
[root@localhost opt]# mv /usr/local/amoeba-mysql-3.0.5-RC/ /usr/local/amoeba
[root@localhost opt]# chmod -R 755 /usr/local/amoeba/

[root@localhost opt]#vi /usr/local/amoeba/jvm.properties

在这里插入图片描述

2.1.4 制作amoeba管理脚本

cd /opt
vi /etc/init.d/amoeba

在这里插入图片描述

chmod +x /etc/init.d/amoeba
chkconfig --add amoeba

service amoeba start
ctrl + c
netstat -anpt | grep 8066 //默认监听在8066端口

在这里插入图片描述

2.1.5 三台mysql数据库中为amoeba授权

##登录20.0.0.20终端##
[root@localhost ~]# mysql -u root -p ####输入密码abc123
mysql> create database test;
Query OK, 1 row affected (0.01 sec)
mysql> GRANT ALL ON . TO test@‘20.0.0.%’ IDENTIFIED BY ‘abc123’;
mysql> FLUSH PRIVILEGES;
mysql> quit

在这里插入图片描述

##登录20.0.0.21终端##
[root@localhost ~]# mysql -u root -p ####输入密码abc123
mysql> GRANT ALL ON . TO test@‘20.0.0.%’ IDENTIFIED BY ‘abc123’;
mysql> FLUSH PRIVILEGES;
mysql> quit

在这里插入图片描述

##登录20.0.0.22终端##
[root@localhost ~]# mysql -u root -p ####输入密码abc123
mysql> GRANT ALL ON . TO test@‘20.0.0.%’ IDENTIFIED BY ‘abc123’;
mysql> FLUSH PRIVILEGES;
mysql> quit

在这里插入图片描述

再回到amoeba 服务器
cd /usr/local/amoeba

[root@localhost amoeba]# vi conf/amoeba.xml

28行:设置客户端连接amoeba前端服务器时使用的用户名和密码
30行:配置用于客户端连接用户名密码

在这里插入图片描述

83行去掉注释,同时把默认的server1改成master
85行把默认的servers改为slaves在这里插入图片描述

[root@localhost amoeba]# vi conf/dbServers.xml //进去

在这里插入图片描述

在这里插入图片描述

[root@localhost amoeba]# service amoeba restart //重启
[root@localhost amoeba]# netstat -anpt | grep java //过滤

在这里插入图片描述

三.验证

  • 客户端安装mysql

在这里插入图片描述

  • 测试读写分离,关闭主从复制功能

在这里插入图片描述

  • 从服务器配置数据,验证读写分离

在这里插入图片描述

  • 验证

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值