【MySQL 基于Amoeba读写分离】

这篇具有很好参考价值的文章主要介绍了【MySQL 基于Amoeba读写分离】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、读写分离是什么?

二、常见的MySQL读写分离方案

1.基于程序代码内部实现

2.基于中间代理层实现

3.Amoeba

三、分离步骤

1.在主机Amoeba上安装java环境

2.安装并配置Amoeba

3.配置Amoeba读写分离,两个Slave读负载均衡

4.测试

4.1 在Client上进行访问测试

4.2 通过代理访问MySQL

四、验证

1.主服务器操作

2.分别在两台从服务器上操作

3.主从服务器添加

4.操作验证 - 读(负载均衡)

4.1 在测试机上第1次查询结果

4.2 在测试机上第2次查询结果

4.3 在测试机上第3次查询结果

5.操作验证 - 写(读写分离)


一、读写分离是什么?

  •         在实际的生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是安全性,高可用还是并发等各个方面都不能完全满足实际需求的,因此一般来说都是通过主从复制的方式来同步数据,再通过读写分离来提供数据的高并发负载能力这样的方案来进行部署。
  •         简单来说,读写分离就是只在主服务器上写,只在从服务器上读,基本的原理是让主数据库处理事务性查询,而从数据库处理select查询,数据库复制被用来把事务性查询导致的改变更新同步到集群中的从数据库。

二、常见的MySQL读写分离方案

1.基于程序代码内部实现

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

2.基于中间代理层实现

代理一般位于客户端和数据库服务器之间,代理服务器接到客户端请求后通过判断转发到后端数据库,代表性程序:

  •         mysql-proxy为mysql开发早期开源项目,通过其自带的lua脚本进行SQL判断,虽然是mysql的官方产品,但是mysql官方不建议将其应用到生产环境。
  •         Amoeba(变形虫)该程序由java语言及逆行开发,阿里巴巴将其应用于生产环境,它不支持事物和存储过程。
  • 3.Amoeba

    •         Amoeba(变形虫)项目开源框架于2008年发布一款Amoeba for mysql软件,这个软件致力于mysql的分布式数据库前端代理层,主要为应用层访问mysql的时候充当SQL路由功能,并具有负载均衡,高可用性,SQL过滤,读写分离,可路由到相关的目标数据库,可并发请求多台数据库,通过Amoeba能够完成多数据源的高可用,负载均衡,数据切片的功能,目前Amoeba已经在很多企业的生产线上使用。

    • 三、分离步骤

    • 1.在主机Amoeba上安装java环境

    • 查看现有Java环境
    • java -version
    • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux
    • 移除过高版本Java
    • which java
    • rm -rf /usr/bin/java
    • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux
  • chmod +x jdk-6u14-linux-x64.bin
  • ./jdk-6u14-linux-x64.bin

  • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • mv jdk1.6.0_31/ /usr/local/jdk1.6

  • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • vim /etc/profile

        export JAVA_HOME=/usr/local/jdk1.6
        export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
        export PATH=$PATH:$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$HOME/bin

        export AMOEBA_HOME=/usr/local/amoeba
        export PATH=$PATH:$AMOEBA_HOME/bin

【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

source /etc/profile

java -version

【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • :因为Amoeba是基于jdk1.5版本开发的,所以官方推荐使用1.5或者1.6版本,高版本不建议使用。
    • 2.安装并配置Amoeba

    • mkdir /usr/local/amoeba
    • tar xf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
    • chmod -R 755 /usr/local/amoeba/
    • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux
    • 3.配置Amoeba读写分离,两个Slave读负载均衡

    • 在Master、Slave1、Slave2服务器中配置Amoeba的访问授权

    • grant all on *.* to 'test'@'192.168.42.%' identified by '123.com';

    • flush privileges;

    • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

    • 编辑amoeba.xml配置文件

    • vim /usr/local/amoeba/conf/amoeba.xml

    • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

      【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

    • 编辑dbServer.xml配置文件

     vim /usr/local/amoeba/conf/dbServers.xml

  • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux
  • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • 配置无误后,启动Amoeba软件,默认端口是TCP协议8066

  • netstat -lnpt | grep 8066

  • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • 4.测试

  • 4.1 在Client上进行访问测试

  • yum -y install mariadb mariadb-devel

  • 4.2 通过代理访问MySQL

mysql -uamoeba -p123456 -h 192.168.42.138 -P 8066

【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

验证步骤就是在MySQL主服务器上创建一个表,会自动同步到各个从服务器上,然后关掉各个服务器上的Slave功能,在分别插入语句测试。

:此处命令中的IP是amoeba服务器的IP。

  • 四、验证

  • 1.主服务器操作

  • create database Rich;

  • use Rich;

  • create table student (id int(10),name varchar(10),address varchar(20));

  • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • 2.分别在两台从服务器上操作

  • show databases;

  • use Rich;

  • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • show tables;

  • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • stop slave;

  • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • 3.主从服务器添加

  • Master
  • use Rich;

  • insert into student values('1','Rich','this_is_master');

  • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • Slave1
  • insert into student values('2','Rich','this_is_slave1');

  • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • Slave2
  • insert into student values('3','Rich','this_is_slave2');

  • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • 4.操作验证 - 读(负载均衡)

  • 4.1 在测试机上第1次查询结果

  • use Rich;
  • select * from student;

  • 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • 4.2 在测试机上第2次查询结果

select * from student;

【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • 4.3 在测试机上第3次查询结果

select * from student;

【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

  • 5.操作验证 - 写(读写分离)

  • 在Client上插入一条语句

 insert into student values ('4','Rich','write_test');

 【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

但在Client上查询不到,最终只有在Master上才能看到这条语句内容,说明写操作在master服务器上

【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

由此验证,已经实现了MySQL读写分离,目前所有的写操作都在Master主服务器上,用来避免数据的不同步,所有的读操作都平分给了Slave从服务器,用来分担数据库压力。

分别在两台从服务器上启用slave功能

start slave;

【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux

现在在Client测试机上查看

select * from student;

【MySQL 基于Amoeba读写分离】,# Linux小白中期,网络小白初期,mysql,数据库,运维,linux文章来源地址https://www.toymoban.com/news/detail-615180.html

到了这里,关于【MySQL 基于Amoeba读写分离】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (十七)前后端分离的Echart图表--基于SpringBoot+MySQL+Vue+ElementUI+Mybatis前后端分离面向小白管理系统搭建

    任务十 VUE侧边菜单栏导航 中我们留了一个home.vue页面一直没有做,它还是这样的 一般情况home就是对整个系统的一些核心数据的图表展示。这次任务,我们将使用echarts图表工具,简单实现用户统计数据展示。通过本次任务,大家能够: (1)了解Echart图表工具的使用方法;

    2024年02月03日
    浏览(44)
  • (一)前端环境搭建---基于SpringBoot+MySQL+Vue+ElementUI+Mybatis前后端分离面向小白管理系统搭建

    这里是为2023届学生完成一个管理系统(主要是后台)的连续更新博客。持续时间为20天,每日练习时间约2-3小时。默认已有系统开发的基础知识,如SpringBoot、数据库、HTML、CSS、JavaScript等,连载过程中,遇到细节问题也可以咨询。QQ群:1140508453。视频将在B站推出。 B站链接:

    2023年04月23日
    浏览(48)
  • (九)axios前后端跨域数据交互--基于SpringBoot+MySQL+Vue+ElementUI+Mybatis前后端分离面向小白管理系统搭建

    在任务六中我们讲过,前后端跨域数据交互,有两种方式可以解决跨域请求,任务六我们使用了CorsConfig类配置跨域。本次任务,我们使用一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中的axios,实现前后端跨域数据交互。通过本次任务,大家能够: (1)掌握axios的使用

    2024年02月15日
    浏览(38)
  • mysql面试题45:读写分离常见方案、哪些中间件可以实现读写分离

    该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 读写分离是一种常见的数据库架构方案,旨在分担数据库的读写压力,提高系统的性能和可扩展性。以下是两种常见的读写分离方案: 主从复制方案

    2024年02月07日
    浏览(45)
  • mysql(六)读写分离

    目录 前言 一、概述 二、配置JAVA环境及安装阿米巴 三、配置阿米巴  四、测试 总结 MySQL读写分离是一种常见的数据库架构设计模式,旨在提高系统的性能和可用性。它通过将读操作和写操作分离到不同的MySQL实例上来实现。 读写分离的原理是: 1. 主服务器(Master):负责处

    2024年02月15日
    浏览(52)
  • MySQL 读写分离

    目录 一、什么是读写分离? 二、为什么要读写分离呢? 三、什么时候要读写分离? 四、主从复制与读写分离 五、MySQL 读写分离原理 六、企业 使用MySQL 读写分离场景 1)基于程序代码内部实现 2)基于中间代理层实现         七、读写分离实验 7.1、Amoeba服务器配置 一、

    2024年02月16日
    浏览(53)
  • Mysql 主从复制、读写分离

    目录 前言 一、主从复制原理 1.1 MySQL的复制类型 1.2 mysql主从复制的工作原理 1.3 MySQL主从复制延迟 1.4 MySQL四种同步方式 1.5 MySQL支持的复制类型 二、 MySQL应用场景 三、主从复制实验 3.1 MySQL主从服务器时间同步 3.1.1 安装ntp、修改配置文件 3.1.2 两台SLAVE服务器配置 3.2 配置主从

    2024年02月16日
    浏览(36)
  • MySQL主从分离读写复制

    在高负载的生产环境里,把数据库进行读写分离,能显著提高系统的性能。下面对MySQL的进行读写分离。 试验环境 A机:IP:192.168.0.1 mysql版本:mysql-5.6.4,主数据服务器(只写操作) B机:IP:192.168.0.2 mysql版本:mysql-5.6.4,从数据服务器(只读操作) 步骤     1.修改主数据库服务器

    2024年02月09日
    浏览(49)
  • 项目实现读写分离操作(mysql)

    Master(主库)----(数据同步)— Slave(从库) Mysql主从复制 mysql主从复制 介绍 mysql主从复制是一个异步的复制过程,底层是基于mysql数据库自带的 二进制日志 功能。就是一台或多台mysql数据库(Slave,即从库)从另一台mysql数据库(Master,即主库)进行日志的复制然后再解析日

    2024年02月05日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包