MySQL数据库的读写分离自我总结

本文介绍了一种通过主从复制和Amoeba实现数据库读写分离的方法,以减轻数据库压力并提高查询效率。详细阐述了配置过程及验证步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:
本文是自己写给自己的,主要是为了整理过段时间面试时所需要的项目思路!!
有欠缺的或不对的地方,请各位帮忙指正!

话不多说,先上图!!!
在这里插入图片描述
1、读写分离是什么?
说简单点,就是将数据库的读,写两个操作分开实现。由一台Master服务器来实现MySQL写的操作,由另一台slave服务器来实现MySQL读的操作。
2、读写分离解决的问题:
因为在对数据库进行“写”的操作是比较耗时的,但数据库的“读”操作只需要很短的时间,数据库的写入就会很大
程度上影响查询的效率。那么此时就需要通过将数据库的“写”和“读”分开,来减轻数据库的压力,提高性能。
3、项目实施:
上面架构图基本和我们实验时的架构图相差无几。
在这里client要想获取数据库的信息,首先client将请求发送到amoeba中,由amoeba来实现读写分离的操作,将用户不同的操作请求发送到不同的数据库上,再由数据库调取相应的信息来反馈给client 。这就是整个读写分离所要实现的流程,
(1)那么首先在这里要考虑到的一个问题,因为读写分离,使得一台服务器实现MySQL读的操作,另一台服务器实现MySQL写的操作。那么如何来保证不管amoeba将client的操作请求转发到那一台数据库服务器上,client都能获取到自己想要的信息呢? 换句话来说就是如何将两台MySQL服务器上的信息实现同步呢?
对!主从复制。。在这里使用MySQL的主从复制再合适不过了。
(2)amoeba
在整个实验中,真正来实现MySQL数据库读写分离的就是amoeba。所以说这是一个重点。
amoeba主要是在应用层访问MySQL的时候充当query 路由功能。位于Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、Query过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。 在Amoeba上面你能够完成多数据源的高可用、负载均衡、数据切片的功能。目前在很多企业的生产线上面使用。
4、具体配置:
一、准备工作
1、防火墙
2、看代理服务器和主从服务器是否能ping通
3、完成主从复制给用户权限

二、在代理服务器上安装java环境
1、上传jdk1.6版本jdk-6u14-linux-x64.bin

2、 chmod +x jdk-6u14-linux-x64.bin (给执行权限)

./jdk-6u14-linux-x64.bin(执行)

mv jdk1.6.0_14/ /usr/local/jdk1.6(将执行文件拷贝到/usr/local/jdk1.6)

vim /etc/profile (改变环境变量)

export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH= C L A S S P A T H : CLASSPATH: CLASSPATH:JAVA_HOME/bin: J A V A H O M E / j r e / l i b e x p o r t P A T H = JAVA_HOME/jre/lib export PATH= JAVAHOME/jre/libexportPATH=JAVA_HOME/lib: J A V A H O M E / j r e / b i n : JAVA_HOME/jre/bin: JAVAHOME/jre/bin:PATH: H O M E / b i n e x p o r t A M O E B A H O M E = / u s r / l o c a l / a m o e b a / e x p o r t P A T H = HOME/bin export AMOEBA_HOME=/usr/local/amoeba/ export PATH= HOME/binexportAMOEBAHOME=/usr/local/amoeba/exportPATH=PATH:$AMOEBA_HOME/bin(在配置文件末尾添加)
source /etc/profile(使环境变量生效)

三、安装Amoeba软件

grant all privileges on . to ‘zhao’@‘192.168.8.109’ identified by ‘zgszgs’;
(给代理服务器访问主从服务器的权限)

mkdir /usr/local/amoeba

tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/

#chmod -R 755 /usr/local/amoeba/

四、配置Amoeba读写分离,两个Slave读负载均衡
mysql> grant all on . to ‘zhao’@‘192.168.8.107’ identified by ‘zgszgs’;

#vim /usr/local/amoeba/conf/amoeba.xml (代理服务器)

zgs (此处用户是外界连接代理服务器) zgszgs

master
master
slaves

vim /usr/local/amoeba/conf/dbServers.xml
zhao
zgszgs(此处用户是用来让主从服务器允许代理服务器访问)

192.168.8.107 192.168.8.108

slave

启动amoeba
/usr/local/amoeba/bin/amoeba start

五、验证
连接MySQL数据库。创建一个表,检查是否可以正常查询,添加。
关闭slave服务器(读)此时进行查询是无法查询表的内容,但可以正常向表内添加信息。
同理关闭masert服务器(写),则无法向表内添加信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值