Linux系统下MySQL读写分离

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 


目录

一、基于Amoeba读写分离

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

2.基于中间代理层实现

三、操作步骤

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

2.安装并配置Amoeba

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

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

master

slave1

slave2

3.2编辑amoeba.xml配置文件

3.3编辑dbServer.xml配置文件

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

3.5在Client上进行访问测试

3.6然后可以通过代理访问MySQL

4.主服务器

5.分别在两台从服务器上


一、基于Amoeba读写分离

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

         简单来说,读写分离就是只在主服务器上写,只在从服务器上读,基本的原理是让主数据库处理事务性查询,而从数据库处理select查询,数据库复制被用来把事务性查询导致的改变更新同步到集群中的从数据库。

二、 目前最常见的MySQL读写分离方案有两种:

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

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

2.基于中间代理层实现

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

(1)mysql-proxy为mysql开发早期开源项目,通过其自带的lua脚本进行SQL判断,虽然是mysql的官方产品,但是mysql官方不建议将其应用到生产环境。

(2)Amoeba(变形虫)该程序由java语言及逆行开发,阿里巴巴将其应用于生产环境,它不支持事物和存储过程。

           MySQL Master IP:192.168.200.111

           MySQL Slave1 IP:192.168.200.112

           MySQL Slave2 IP:192.168.200.113

           MySQL Amoeba IP:192.168.200.114

           MySQL Client IP:192.168.200.115

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

三、操作步骤

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

检查java环境—java version

查找Java路径—which Java

若版本不对 rm 删除Java 从新安装java

2.安装并配置Amoeba

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

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

master

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

flush privileges;

slave1

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

flush privileges;

slave2

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

flush privileges;

3.2编辑amoeba.xml配置文件

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

第一处

第二处

3.3编辑dbServer.xml配置文件

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

第一处

 第二处

第三处

 

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

/usr/local/amoeba/bin/amoeba start &

 netstat -lnpt | grep 8066

netstat -anpt | grep 3306

3.5在Client上进行访问测试

# yum -y install mariadb mariadb-devel

 mysql -uamoeba -p123456 -h 192.168.200.114 -P 8066

3.6然后可以通过代理访问MySQL

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

4.主服务器

create database lsq;

use lsq

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

5.分别在两台从服务器上

 5.1master

use lsq;

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

5.2 slave1

use lsq;

 insert into student values('1','Rich','this_is_slave1');

5.3 slave2

use lsq

 insert into student values('1','Rich','this_is_slave2');

6.操作测试

1.1在客户机上第1次查询结果

1.2在客户机上第2次查询结果

  

1.3在客户机上第3次查询结果

2.测试写操作

客户端:insert into student values ('4','Rich','write_test')

查看:select * from student

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

 

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

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

现在在Client测试机上查看

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/15777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【大数据趋势】7月30日 汇率,恒指期货的大数据趋势概率分析。

1. 数据源头之一 : 汇率变化 从程序模拟趋势来看,美元在持续弱势状态,周线上正在构建一个新的下跌趋势,而且正在反抽过程中,即将完成,如果没有外部干预,会顺势往下。从月线来看,高点逐步降低&a…

线性代数的学习和整理2:线性代数的基础知识(整理ing)

目录 0 写在前面的话 网上推荐的线性代数的课程 1 线性代数和矩阵的各种概念 1.1 各种逻辑图 2 关于线性代数入门的各种灵魂发问 2.1 什么是线性,什么是线性相关 ? 为什么叫线性变换? 为什么叫线性代数? 2.2 线性代数是人造…

Spark性能调优指南来了!

1、什么是Spark Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 Spark Core:实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed Dat…

安科瑞智慧空开微型断路器在银行的应用-安科瑞黄安南

应用场景 智能微型断路器与智能网关组合应用于末端回路 功能 1.计量功能:实时上报电压、电流、功率、电能、漏电、温度、频率等电参量; 2.报警功能:过压报警、欠压报警、过流报警、过载报警、漏电报警、超温报警、三相电缺相报警&#xff…

论文笔记:Adjusting for Autocorrelated Errors in Neural Networks for Time Series

2021 NIPS 原来的时间序列预测任务是根据预测论文提出用一阶自回归误差预测 一阶差分,类似于ResNet的残差思路?记为pred,最终的预测结果

【蓝桥杯备考资料】如何进入国赛?

目录 写在前面注意事项数组、字符串处理BigInteger日期问题DFS 2013年真题Java B组世纪末的星期马虎的算式振兴中华黄金连分数有理数类(填空题)三部排序(填空题)错误票据幸运数字带分数连号区间数 2014年真题蓝桥杯Java B组03猜字…

维护电脑,让“战友”保持长寿命

目录 维护电脑,让“战友”保持长寿命介绍你的电脑介绍一下你的日常维护措施给出一些你觉得有用的维护技巧不推荐做些什么其他补充总结 无论是学习还是工作,电脑都是IT人必不可少的重要武器,一台好电脑除了自身配置要经得起考验,后…

Linux内核的I2C驱动框架详解------这应该是我目前600多篇博客中耗时最长的一篇博客

目录 1 I2C驱动整体框架图 2 I2C控制器 2.1 I2C控制器设备--I2C控制器在内核中也被看做一个设备 2.2 i2c控制器驱动程序 2.3 platform_driver结构体中的probe函数做了什么 2.3.1 疑问: i2cdev_notifier_call函数哪里来的 2.3.2 疑问:为什么有两…

2023 ISSE观察:智能遮阳窗帘行业蓬勃发展,AI设计引热议

7月31日,上海国际智能遮阳与建筑节能展览会落下帷幕。作为智能遮阳的行业展会,展会三天,现场热闹非凡,参展商和观展者络绎不绝。 作为一大行业盛事,2023 ISSE展会方打造了五大展区,除了提供系统门窗装修方案…

二、SQL-6.DCL-1).用户管理

一、DCL介绍 Data Control Language 数据控制语言 用来管理数据库 用户、控制数据库的 访问权限。 二、语法 1、管理用户 管理用户在系统数据库mysql中的user表中创建、删除一个用户,需要Host(主机名)和User(用户名&#xff0…

openGauss学习笔记-26 openGauss 高级数据管理-约束

文章目录 openGauss学习笔记-26 openGauss 高级数据管理-约束26.1 NOT NULL约束26.2 UNIQUE约束26.3 PRIMARY KEY26.4 FOREIGN KEY26.5 CHECK约束 openGauss学习笔记-26 openGauss 高级数据管理-约束 约束子句用于声明约束,新行或者更新的行必须满足这些约束才能成…

基于SHARC+®单核的ADSP-21567KBCZ6、ADSP-21566BBCZ4、ADSP-21566KBCZ4高性能DSP处理器产品

ADSP-2156x 处理器的速度高达 1 GHz,属于 SHARC 系列产品。ADSP-2156x 处理器基于 SHARC 单核。ADSP-2156x SHARC 处理器是 SIMD SHARC 系列数字信号处理器 (DSP) 中的一款产品,采用 ADI 的超级哈佛架构。这些 32 位/40 位/64 位浮点处理器已针对高性能音…

Rust vs Go:常用语法对比(九)

题图来自 Golang vs Rust - The Race to Better and Ultimate Programming Language 161. Multiply all the elements of a list Multiply all the elements of the list elements by a constant c 将list中的每个元素都乘以一个数 package mainimport ( "fmt")func …

Android Unit Test

一、测试基础知识 1.1 测试级别 测试金字塔(如图 2 所示)说明了应用应如何包含三类测试(即小型、中型和大型测试): 小型测试是指单元测试,用于验证应用的行为,一次验证一个类。 中型测试是指…

创造自己的宠物医院预约服务小程序,步骤详解

在现代社会,越来越多的人开始养宠物,而宠物的健康管理也成为了一个重要的话题。为了方便宠物主人随时随地进行宠物医院的管理和服务,开发一个宠物医院管理小程序是很有必要的。今天我们将分享一些制作宠物医院管理小程序的技巧,帮…

Vue没有node_modules怎么办

npm install 一下 然后再npm run serve 就可以运行了

基于多任务学习卷积神经网络的皮肤损伤联合分割与分类

文章目录 Joint segmentation and classification of skin lesions via a multi-task learning convolutional neural network摘要本文方法实验结果 Joint segmentation and classification of skin lesions via a multi-task learning convolutional neural network 摘要 在…

Python实现GA遗传算法优化BP神经网络分类模型(BP神经网络分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 遗传算法(Genetic Algorithm,GA)最早是由美国的 John holland于20世…

青龙面板的安装和使用

玩nas除了看看电影,那肯定还得玩转docker,这期讲的就是青龙面板,一个跑脚本的神器。 GitHub地址:青龙面板 1.安装 你安装完docker那就很简单了,不懂可以看看我这篇博客docker安装 镜像源一定要搞,要不然…

bigemap工程工程行业应用

客户目前主要是需求为使用下载卫星图、等高线、水系、路网等等元素数据做线路规划图 其他信息 客户需要的图中还包含一些农作物以及需要在软件上标注带有箭头的线段(不能满足) 如下图: 使用场景: 目前主要为制图、规划线路等等…