目录
4.1.3、配置Amoeba读写分离,两个Slave 读负载均衡
编辑 4.1.5、后台启动Amoeba软件,并查看端口是否已开启编辑
4.2.1、 在主服务上创建表并插入数据,并在客户端以及从服务器上查看表
前言
之前已经说过了MySQL主从复制是其最重要的功能之一。主从复制是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。对于多级复制,数据库服务器即可充当主机,也可充当从机。讲完了主从复制这一重要功能,我们再来讲另一个重要功能,即读写分离,虽然主从保证了数据方面的高可用,若是数据的处理无法应付高并发,则高可用不能算完全实现
一、什么是读写分离
读写分离基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作,就是只在主服务器上写,只在从服务器上读。
数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。
二、为什么要读写分离
因为数据库的“写”(写10000条数据可能要3分钟)操作是比较耗时的。 但是数据库的“读”(读10000条数据可能只要5秒钟)。 所以读写分离,解决的是,数据库的写入,影响了查询的效率。
三、目前较为常见的MySQL读写分离
3.1、基于程序代码内部实现
基于程序代码内部实现 在代码中根据select、insert进行路由分类,这类方法也是目前生产环境应用广泛的,优点是性能较好,因为在程序代码中实现,不需要增加额外的设备作为硬件开支;缺点是需要开发人员来实现,运维人员无从下手。
3.2、基于中间代理层实现
代理一般位于客户端和服务器之间,代理服务器接到客户端请求后通过判断后转发到后端数据库,有以下代表性程序。
3.2.1、MySQL-Proxy
MySQL-Proxy 为MySQL开源项目,通过其自带的lua脚本进行SQL判断。
3.2.2、Atlas
Atlas是由奇虎360的Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。
360内部使用Atlas运行的mysq1业务,每天承载的读写请求数达几十亿条。支持事物以及存储过程。
3.2.3、Amoeba
Amoeba由陈思儒开发,作者曾就职于阿里巴巴。该程序由Java语言进行开发,阿里巴巴将其用于生产环境。但是它不支事务和存储过程。
由于使用MySQL Proxy 需要写大量的Lua脚木,这些Lua并不是现成的,而是需要自己去写。这对于并不熟悉MySQL Proxy内置变量和MySQLProtocol的人来说是非常困难的
Amoeba是一个非常容易使用、可移植性非常强的软件。因此它在生产环境中被广泛应用于数据库的代理层
四、读写分离的部署
Master服务器:192.168.226.22
slave1服务器:192.168.226.21
slave2服务器:192.168.226.20
Amoeba服务器:192.168.226.8
4.1、Amoeba服务器配置192.168.226.8
4.1.1、安装java环境
4.1.2、安装Amoeba软件
4.1.3、配置Amoeba读写分离,两个Slave 读负载均衡
4.1.4、 回到amoeba服务器配置amoeba服务
4.1.5、后台启动Amoeba软件,并查看端口是否已开启![](https://img-blog.csdnimg.cn/5a6ce345d37649b797c75fe1070631ec.png)
4.2、客户端安装mariadb数据库
4.2.1、 在主服务上创建表并插入数据,并在客户端以及从服务器上查看表
五、总结
master只能写不能读,因此它读不到slave插入的内容,只能在amoeba上查看到