• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

MySQL读写分离—你确定不瞅一眼!!!

互联网 diligentman 2小时前 1次浏览

文章目录

  • 一、MySQL读写分离
    • 1、概述
    • 2、读写分离原理
    • 3、读写分离存在的作用
    • 4、常见MySQL读写分离分为两种
  • 二、搭建MySQL读写分离
    • 1、安装Java环境
    • 2、amoeba安装配置
      • 2.1 创建新的目录并解压
      • 2.2 赋予amoeba权限并开启
    • 3、配置Amoeba读写分离
      • 3.1 开放权限
      • 3.2 配置amoeba服务
  • 三、测试读写分离
    • 1、客户端测试
      • 1.1 快速安装MySQL虚拟客户端
    • 2、测试一:是否能通过amoeba登录后端服务器进行SQL操作
    • 3、测试二:测试mysql读写分离
    • 4、测试三:读写分离架构,对于“读”的任务是怎么操作的测试方式

一、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读写分离---你确定不瞅一眼!!!
1.2 进入/etc/profile配置文件,添加配置文件
MySQL读写分离---你确定不瞅一眼!!!
末行加入
MySQL读写分离---你确定不瞅一眼!!!

MySQL读写分离---你确定不瞅一眼!!!

2、amoeba安装配置

2.1 创建新的目录并解压

MySQL读写分离---你确定不瞅一眼!!!

2.2 赋予amoeba权限并开启

MySQL读写分离---你确定不瞅一眼!!!

3、配置Amoeba读写分离

3.1 开放权限

MySQL读写分离---你确定不瞅一眼!!!

MySQL读写分离---你确定不瞅一眼!!!

MySQL读写分离---你确定不瞅一眼!!!

3.2 配置amoeba服务

MySQL读写分离---你确定不瞅一眼!!!
进入 amoeba.xml配置文件
MySQL读写分离---你确定不瞅一眼!!!
MySQL读写分离---你确定不瞅一眼!!!
进入dbServers.xml修改数据库配置文件,并重新开启amoeba
MySQL读写分离---你确定不瞅一眼!!!
MySQL读写分离---你确定不瞅一眼!!!
MySQL读写分离---你确定不瞅一眼!!!
MySQL读写分离---你确定不瞅一眼!!!

三、测试读写分离

1、客户端测试

1.1 快速安装MySQL虚拟客户端

MySQL读写分离---你确定不瞅一眼!!!
MySQL读写分离---你确定不瞅一眼!!!

2、测试一:是否能通过amoeba登录后端服务器进行SQL操作

2.1 首先在虚拟客户端上进行mysql数据库配置
MySQL读写分离---你确定不瞅一眼!!!
2.2 进入master主服务器上查看更新
MySQL读写分离---你确定不瞅一眼!!!
2.3 在slave从服务器上查看更新
MySQL读写分离---你确定不瞅一眼!!!

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

3.1 关闭2台从服务器stop slave;查看slave是否能获取更新的数据
MySQL读写分离---你确定不瞅一眼!!!
MySQL读写分离---你确定不瞅一眼!!!
此时在客户端插入新的内容
MySQL读写分离---你确定不瞅一眼!!!
MySQL读写分离---你确定不瞅一眼!!!
MySQL读写分离---你确定不瞅一眼!!!

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

4.1 分别在slave1和slave2 school数据库中插入不同的数据,查看两个从服务器中在stop状态下能否相互更新
MySQL读写分离---你确定不瞅一眼!!!
MySQL读写分离---你确定不瞅一眼!!!
MySQL读写分离---你确定不瞅一眼!!!

MySQL读写分离---你确定不瞅一眼!!!
4.2 分别在slave1和slave2 school数据库中插入不同的数据,然后再使用客户端进行select查询
MySQL读写分离---你确定不瞅一眼!!!
MySQL读写分离---你确定不瞅一眼!!!
MySQL读写分离---你确定不瞅一眼!!!


程序员灯塔
转载请注明原文链接:MySQL读写分离—你确定不瞅一眼!!!
喜欢 (0)