mysql的读写分离(mysql读写分离实现几种方式)

文章目录

mysql的读写分离(mysql读写分离实现几种方式)

一、MySQL读写分离

1、概述

  • 在实际的生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的
  • 通过主从复制来同步数据,再通过读写分离来提升数据库并发负载能力的方案来进行部署和实施

2、读写分离原理

  • 让主数据库处理事务性增、删、改,而从数据库处理SELECT查询操作
  • 数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库

3、读写分离存在的作用

  • 因为数据库的“写”操作是比较耗时的
  • 但是数据库的“读”(读取10000条数据可能只需要5秒钟)
  • 所以读写分离解决的是数据库的写入,影响了查询的效率

4、常见MySQL读写分离分为两种

4.1 基于程序代码内部实现

  • 在代码中根据select、insert进行路由分类,这类方法也是目前生产环境应用最广泛的
  • 优点是:性能好;因为在程序代码中实现,不需要增加额外的设备为硬件开支;
  • 缺点是:需要开发人员来实现
  • 并不是所有的应用都是适合程序代码中实现读写分离,像一些大型复杂的Java应用,如果在程序代码中实现读写分离对代码改动较大
    4.2 基于中间代理层实现
  • 代理一般位于客户端和服务器之间,代理服务器接到客户端请求后通过判断后转发到后端数据库,
  • 有以下代表程序:
    ①MySQL-Proxy:为MySQL开源项目,通过其自带的lua脚本进行SQL判断
    ②Atlas:是由奇虎360的Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目;是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性
    360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条,支持事务以及存储过程
    ③Amoeba:由陈思儒开发,该程序由Java语言进行开发,阿里巴巴将其用于生产环境,但是不支持事务和存储过程
    Amoeba是一个非常容易使用,可移植性非常强的软件,因此在生产环境中被广泛用于数据库的代理层

二、搭建MySQL读写分离

1、安装Java环境

1.1 首先将源文件拉入/opt目录下

[root@amoeba local]# cp jdk-6u14-linux-x64.bin /usr/local/ #将可执行文件复制到/usr/local目录下
[root@amoeba local]# chmod +x  jdk-6u14-linux-x64.bin  #赋予权限
[root@amoeba local]# ./jdk-6u14-linux-x64.bin  执行该文件

mysql的读写分离(mysql读写分离实现几种方式)

1.2 进入/etc/profile配置文件,添加配置文件

mysql的读写分离(mysql读写分离实现几种方式)

末行加入

mysql的读写分离(mysql读写分离实现几种方式)

mysql的读写分离(mysql读写分离实现几种方式)

2、amoeba安装配置

2.1 创建新的目录并解压

mysql的读写分离(mysql读写分离实现几种方式)

2.2 赋予amoeba权限并开启

mysql的读写分离(mysql读写分离实现几种方式)

3、配置Amoeba读写分离

3.1 开放权限

mysql的读写分离(mysql读写分离实现几种方式)

mysql的读写分离(mysql读写分离实现几种方式)

mysql的读写分离(mysql读写分离实现几种方式)

3.2 配置amoeba服务

mysql的读写分离(mysql读写分离实现几种方式)

进入 amoeba.xml配置文件

mysql的读写分离(mysql读写分离实现几种方式)

mysql的读写分离(mysql读写分离实现几种方式)

进入dbServers.xml修改数据库配置文件,并重新开启amoeba

mysql的读写分离(mysql读写分离实现几种方式)

mysql的读写分离(mysql读写分离实现几种方式)

mysql的读写分离(mysql读写分离实现几种方式)

mysql的读写分离(mysql读写分离实现几种方式)

三、测试读写分离

1、客户端测试

1.1 快速安装MySQL虚拟客户端

mysql的读写分离(mysql读写分离实现几种方式)

2.2 进入master主服务器上查看更新

mysql的读写分离(mysql读写分离实现几种方式)

2.3 在slave从服务器上查看更新

mysql的读写分离(mysql读写分离实现几种方式)

3、测试二:测试mysql读写分离

3.1 关闭2台从服务器stop slave;查看slave是否能获取更新的数据

mysql的读写分离(mysql读写分离实现几种方式)

mysql的读写分离(mysql读写分离实现几种方式)

此时在客户端插入新的内容

mysql的读写分离(mysql读写分离实现几种方式)

mysql的读写分离(mysql读写分离实现几种方式)

mysql的读写分离(mysql读写分离实现几种方式)

4、测试三:读写分离架构,对于“读”的任务是怎么操作的测试方式

4.1 分别在slave1和slave2 school数据库中插入不同的数据,查看两个从服务器中在stop状态下能否相互更新

mysql的读写分离(mysql读写分离实现几种方式)

mysql的读写分离(mysql读写分离实现几种方式)

mysql的读写分离(mysql读写分离实现几种方式)

mysql的读写分离(mysql读写分离实现几种方式)

4.2 分别在slave1和slave2 school数据库中插入不同的数据,然后再使用客户端进行select查询

mysql的读写分离(mysql读写分离实现几种方式)

mysql的读写分离(mysql读写分离实现几种方式)

mysql的读写分离(mysql读写分离实现几种方式)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论