Linux系统下MySQL读写分离

news2024/10/5 13:50:49

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


目录

一、基于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.coloradmin.cn/o/817525.html

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

相关文章

matlab RRR机械臂 简略代码

RRR机器人!启动! gazebo在arm mac上似乎难以运行,退而选择Matlab,完成老师第一个作业,现学现卖,权当记录作业过程,有不足之处,多多指教。 作业!启动! RRR机…

WAF绕过-信息收集篇

WAF绕过主要集中在信息收集,漏洞发现,漏洞利用,权限控制四个阶段。 1、什么是WAF? Web Application Firewall(web应用防火墙),一种公认的说法是“web应用防火墙通过执行一系列针对HTTP/HTTPS的安…

有效的随机圆检测

文章目录 0、 摘要:一、 Base Idea二、 Determining Possible Circle2.1 判别条件2.2 圆的判别 三、Determining True Circles四、The Proposed RCD五、改进六、参考在这里插入图片描述 有效的随机圆检测 0、 摘要: 参考的文章提出了一种有效的不基于霍…

一文教你搭建工程化开发环境!

搭建工程化开发环境 下载 Node.js 官方下载地址 https://nodejs.org/zh-cn/download/releases node.js 版本迭代的非常快,目前官方已经推出到 v19.2.0 版本了,相对是一个比较新的版本了。建议下载 v14.18.3 版本,至少这个版本目前在很多项…

【kubernetes系列】flannel之vxlan模式分析

概述 在Kubernetes中要保证容器之间网络互通,网络至关重要。而Kubernetes本身并没有自己实现容器网络,而是而是借助CNI标准,通过插件化的方式自由接入进来。在容器网络接入进来需要满足如下基本原则: Pod无论运行在任何节点都可…

有趣的Python之基本语法(一篇足够)

目录 Python简介 基本数据类型 进入交互模式 input()函数 条件语句 逻辑运算符 列表list 元组 字典 循环语句 format()方法和f 定义函数 python中的标准库引入 引入第三方库模块 面向对象 读文件 写文件 异常处理 Python简介 面向对象编程、函数式编程和过程…

二 动手学深度学习v2笔记 —— 线性回归 + 基础优化算法

二 动手学深度学习v2 —— 线性回归 基础优化算法 目录: 线性回归基础优化方法 1. 线性回归 总结 线性回归是对n维输入的加权,外加偏差使用平方损失来衡量预测值和真实值的差异线性回归有显示解线性回归可以看作是单层神经网络 2. 基础优化方法 梯度下降 小批量…

4通道高速数据采集卡推荐哪些呢

FMC141是一款基于VITA57.4标准的4通道2.8GSPS/2.5GSPS/1.6GSPS采样率16位DA播放FMC子卡,该板卡为FMC标准,符合VITA57.4与VITA57.1规范,16通道的JESD204B接口通过FMC连接器连接至FPGA的高速串行端口。 该板卡采用TI公司的DAC39J84芯片&#x…

【玩转Linux】Linux输入子系统简介

(꒪ꇴ꒪ ),hello我是祐言博客主页:C语言基础,Linux基础,软件配置领域博主🌍快上🚘,一起学习!送给读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!作者水平很有限,如果发现错误&#x…

LeetCode每日一题Day1——买卖股票的最佳时机

✨博主:命运之光 🦄专栏:算法修炼之练气篇(C\C版) 🍓专栏:算法修炼之筑基篇(C\C版) 🐳专栏:算法修炼之练气篇(Python版) ✨…

青大数据结构【2016】

一、单选 二、简答 3.简述遍历二叉树的含义及常见的方法。

shiro550反序列化漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程)

漏洞原理 本文所有使用的脚本和工具都会在文末给出链接,希望读者可以耐心看到最后。 啥是shiro? Shiro是Apache的一个强大且易用的Java安全框架,用于执行身份验证、授权、密码和会话管理。使用 Shiro 易于理解的 API,可以快速轻松地对应用程序进行保…

代码随想录算法训练营之JAVA|第十七天| 654. 最大二叉树

今天是第17天刷leetcode,立个flag,打卡60天。 算法挑战链接 654. 最大二叉树https://leetcode.cn/problems/maximum-binary-tree/description/ 第一想法 错误的想法,就不说了。 看完代码随想录之后的想法 用递归模拟真实的过程 如果我…

【iOS】通知原理

我们可以通过看通知的实现机制来了解通知中心是怎么实现对观察者的引用的。由于苹果对Foundation源码是不开源的,我们具体就参考一下GNUStep的源码实现。GNUStep的源码地址为:GNUStep源码GitHub下载地址, 具体源码可以进行查看。 通知的主要流程 通知全…

AD21 PCB设计的高级应用(二)PCB常见走线等长设计

(二)PCB常见走线等长设计 1.蛇形线的等长设计2.DDR的等长分组3.等长的拓扑结构3.1 点对点连接3.2 T型拓扑结构3.3 菊花链拓扑结构 1.蛇形线的等长设计 在 PCB 设计中,网络等长调节目的就是为了尽可能地降低信号在 PCB上传输延迟的差异。在 Altium Desig…

C语言第十三课--------初阶指针的认识--------重要部分

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 🎂 作者介绍: 🎂🎂 🎂…

JavaSE类和对象(重点:this引用、构造方法)

目录 一、类的定义方式以及实例化 1.面向对象 Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在Java的世界里一切皆为对象。 2.类的定义和使用 1.在java中定义类时需要用到class关键字 3.类的实例化 4.类实例化的使用 二、this引用 …

面试中常聊 AMS,你是否又真的了解?

在面试的时候,经常会被问到这些问题: 对Activity的启动流程了解吗?AMS在Android起到什么作用,简单分析下Android的源码system_server为什么要在Zygote中启动,而不是由init直接启动呢?为什么要专门使用Zygote进程去孵…

有点慌,新公司项目构建用的Gradle

入职新公司,构建项目的工具用的gradle,以前没用过,看到一个build.gradle,点进去,心里一句我曹,这写的都是些什么玩意,方得一批,赶紧去补了下课。 好吧,先学点语法&#…

根据选择内容自动生成正则表达式

地址: https://regex.ai/ 如何使用? 比如我这里有个需求: 提取图片路径中的文件名 https://wx4.sinaimg.cn/mw1024/0040jbadly1hg5nk0l3gtj62c0340kjl02.jpg 提取出0040jbadly1hg5nk0l3gtj62c0340kjl02.jpg 数据越多越准确 左边提供数据, 右边给出需要提取的数据, 点击run&…