MySQL基础笔记(14)-使用Amoeba和Docker搭建MySQL读写分离架构

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


Amoeba(变形虫)相当于一个SQL请求的路由器,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的 Replication等机制来实现副本同步等功能。amoeba对底层数据库连接管理和路由实现也采用了可插拨的机制,第三方可以开发更高级的策略类来替代作者的实现。由于它比MySQL Proxy配置更加简单,故本次选择它作为读写分离配置的中间件。

一、搭建MySQL主从复制和主主复制架构

这是使用Amoeba进行读写分离配置的基础,可参考之前的文章:
https://blog.youkuaiyun.com/pbrlovejava/article/details/87002171
https://blog.youkuaiyun.com/pbrlovejava/article/details/87290238

二、读写分离架构

这里要搭建的读写分离架构如图,采用的是双主热备+单从服务器,其中同一时刻只能由一台主库负责写入(默认为Master1),从从库Slave中读取数据,当Master1发生宕机时,需要手动将Master1修复或者是配置Amoeba将Master2设置为写库,并且将Slave的Master配置为Master2;当从库Slave宕机,则将Master2作为读库,达到故障切换效果。
在这里插入图片描述

三、Amoeba的下载和安装

这里使用的是ubuntu系统的服务器进行安装:

2.1、安装配置JDK

这里需要安装并且配置JDK环境,因为Amoeba是基于Java开发的。
https://www.baidu.com/link?url=mRGk0BhQiVpOCaMiaMIRZjwYF0AdBGaBW4C45_qfnAAtsIYhLFpgEW-kwuJHSlsKLPVIYGSPfumrfgx8oXFskimbe-lM-JGeIuVuDnUlqlC&wd=&eqid=ecaf71fb000245bd000000065c6fee4d

2.2、下载Amoeba

https://sourceforge.net/projects/amoeba/files/Amoeba%20for%20mysql/2.2.x/

2.3、将其上传并解压授权
# 解压至/usr/local/amoeba/
tar -zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
# 授予该目录所有权限
chmod 777 /usr/local/amoeba/
# 检查amoeba是否安装成功
/usr/local/amoeba/bin/amoeba status

四、为Amoeba创建MySQL账号

为了使用Amoeba,我们需要三台由Docker搭建的MySQL中为其创建一个amoeba账户:

grant all on *.* to 'amoeba'@'%' identified by '123';

五、配置Amoeba服务器

5.1、修改amoeba.xml

修改amoeba.xml ,配置Amoeba账号以及读写池

vi /usr/local/amoeba/conf/amoeba.xml
<property name="user">amoeba</property>
<property name="password">123</property>       
<property name="defaultPool">masters</property> # 默认池
<property name="writePool">masters</property>   # 写操作时使用的池
<property name="readPool">slaves</property>     # 读操作时使用的池

5.2、修改dbServers.xml

修改dbServers.xml,配置MySQL数据库信息和读写分离信息:

<property name="schema">mysql</property>  # 使用的是MySQL数据库 
<property name="user">amoeba</property>   # 登陆数据库用的amoeba账户
<property name="password">123</property>

<dbServer name="master1"  parent="abstractServer">    
	<factoryConfig>
		<property name="ipAddress">172.17.0.3</property>  
	</factoryConfig>
</dbServer>

<dbServer name="master2"  parent="abstractServer">
	<factoryConfig>
		<property name="ipAddress">172.17.0.5</property>  
	</factoryConfig>
</dbServer>

<dbServer name="slave"  parent="abstractServer">
	<factoryConfig>
		<property name="ipAddress">172.17.0.2</property>  
	</factoryConfig>
</dbServer>

<dbServer name="masters" virtual="true">     
	<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
<!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
	<property name="loadbalance">1</property>     
	<property name="poolNames">master1</property>
</dbServer>

<dbServer name="slaves" virtual="true">     
	<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
<!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
	<property name="loadbalance">1</property>    
	<property name="poolNames">slave</property>
</dbServer>

六、启动Amoeba

  • 启动Amoeba:
nohup /usr/local/amoeba/bin/amoeba start &
  • 查看Amoeba及数据库运行情况:
 netstat -anpt | grep java

在这里插入图片描述这里是8066端口即是Amoeba的监听端口,外部程序访问需要经过这个端口去进行读写分离的分发。

七、使用Amoeba

以上就是Amoeba的全部配置了,是不是十分简单呢?当然,使用Amoeba也同样十分简单,我们只需要从8066端口登陆数据库,刚才注册的那个amoeba账号派上用场了:

mysql -u amoeba -p -h 127.0.0.1 -P 8066
Amoeba实现mysql读写分离 一、关于读写分离 amoeba : 英[ə’mi:bə] 读写分离(Read/Write Splitting),基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。 数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 二、Amoeba 是什么 Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路 阅读详情

相关推荐

2025使用VM虚拟机安装配置Macos苹果系统下Flutter开发环境保姆级教程--下篇

我们可以看到,目前配置基本完成了,现在有两个错,一个是Chrome没安装,这个自己安装就可以了,如果不需要WEB测试也不影响开发,另一个是Simulator还没安装,这个主要是安装的时间太长了,也就是上面的这一步。这里要注意,这个下载安装会比较慢,有的载会特别卡造成安装失败,最好的办法是挂一个VPN,保证安装完成,不过这个可以在以后单独进行安装。至此,基本的安装完毕,好多人会以为Xcode就OK了,其实还没有,我们还缺少命令行工具包,这个在安装完Flutter以后进行设置。

weixin_48803304的博客 1413

mysql基于Amoeba(变形虫)实现读写分离

​ Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。主要解决:• 降低 数据切分带来的复杂多数据库结构• 提供切分规则并降低 数据切分规则 给应用带来的影响• 降低db 与客户端的连接数• 读写分离。

极客云曦前端 1084

多边形裁剪算法

多边形裁剪算法 刚参加工作就跟多边形刚上了,对于多边形的裁剪做一些简单的总结。 多边形裁剪主要有四种算法 Greiner-Hormann裁剪算法 Sutherland-Hodgman算法 Vatti裁剪算法 Weiler-Atherton裁剪算法 作为一名想要成为优秀算法工程师的程序员,我们不能只会使用,而不知道其原理,倘若如此,我们无法做到应用于本身业务上的定制化的修改。 Greiner–H...

papalqi 6729

mysql数据库中的amoeba读写分离解析

这要求主从虚拟机必须安装有mariadb数据库服务和ntp服务,ntp服务主要是为了校对时间。

2302_77579538的博客 260

周立功CAN盒二次开发实录:用QT5.1.0解析汽车CAN报文(附数据可视化技巧)

本文详细介绍了基于QT5.1.0和周立功USBCAN-E-U设备进行汽车CAN总线二次开发的实战过程。核心内容包括利用CANdb++数据库解析原始报文并转换为物理值,以及通过QCustomPlot库实现高性能实时数据可视化,为车载诊断与车联网开发提供了一套完整的工程实践方案。

sugar的博客 1058

TOGAF9.2/10 认证基础知识点概览表

(考点解析:业务场景是一种重要的技术,可以在企业架构的各个阶段使用,主要是架构愿景和业务架构,但如果需要,也可以在其他架构域中使用,以直接从业务的高级需求中派生架构的特征。“哪里”可以看作是对相关企业的界定、“为什么”可以被视为组织环境中的关键驱动因素和要素、“谁”是指确定发起人利益相关者和受业务指令影响的其他主要利益相关者,以创建企业架构,并确定他们来自企业的需求和优先级、他们与企业的关系以及彼此之间所需的工作行为。它是业务驱动和业务主导的,它结 合了所有业务线的必要努力,以实现所需的能力。

2302_81497763的博客 2081

MySQL主从复制和读写分离搭建

两日志二进制文件: 记录数据库变动的信息(语句、变动记录)中继日志文件: 用于临时存放二进制文件内容。三线程dump线程: ①监听I/O线程请求。②将二进制日志文件更新的数据发送给slave的I/O线程。I/O线程: ①监听master主机的二进制文件。②向master的dump线程发出同步请求SQL线程: 读取中继日志中的文件,更新到本机的数据库。

weixin_46254171的博客 449

Unity资源提取实战指南:工具、工程与效率三维框架

Unity资源提取是游戏维护、外包接手和逆向分析中的基础技术动作,其本质是理解Unity序列化机制与资源加载流程。核心原理在于解析SerializedFile结构、TypeTree类型树及Addressables/AssetBundle双轨架构;技术价值体现在打破加密/压缩/混淆导致的资源不可见性,支撑美术还原、性能优化与项目交接;典型应用场景包括老项目资产抢救、AR仿真数据导出、手游换皮资源复用等。本文聚焦Unity 2019.4+现代管线,深度融合AssetRipper内存注入与三层穿透法,提供可复用的

weixin_30699955的博客 316

Ubuntu10下MySQL搭建Amoeba_读写分离+分片

一、背景知识 之前已经写了一篇关于Amoeba读写分离:Ubuntu10下MySQL搭建Amoeba_读写分离,上篇文章只是简单的测试下搭建读写分离,这里再加上一点的内容,在读写分离的基础上再加入分片。 阅读本篇文章之前建议你先阅读: Ubuntu10下MySQL搭建Master/Slave Ubuntu10下搭建MySQL Proxy读写分离 测试内容:把数据分

u013948191的专栏 310

DDR内存条选购避坑指南:单Rank vs 双Rank性能实测对比(附2024年颗粒推荐)

本文深入解析了内存条中单Rank与双Rank设计的原理与性能差异。通过实战测试对比,揭示了双Rank内存在高负载场景(如3D渲染、视频剪辑)中凭借Rank Interleaving技术带来的显著性能优势,并提供了2024年针对不同用户需求的DDR4/DDR5内存选购策略与避坑指南。

ik678901的博客 1140

将 SAP BTP ABAP environment 与 SAP S/4HANA Cloud 公有云版集成:从架构理念到落地实战

本文探讨了在SAP云环境中实现ABAP扩展应用与S/4HANA Cloud系统集成的技术方案。通过建立标准化的远程通信通道,开发者可在SAP BTP ABAP环境中开发扩展应用,同时安全访问S/4HANA Cloud的核心业务数据和服务。文章详细介绍了整体架构设计、开发实现步骤(包括定义通信场景、生成服务消费模型和编写调用代码)以及管理员在S/4HANA侧的配置工作(创建通信安排和技术用户)。通过一个业务伙伴自助注册平台的案例,展示了如何在不修改标准系统的情况下实现云扩展,体现了SAP"干净核心&

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 242

amoeba高可用mysql_mysql高可用-读写分离-双主多从

一.体系架构在Keepalived + amoeba高可用负载均衡架构中,keepalived负责实现High-availability (HA) 功能控制前端机VIP(虚拟网络地址),当有设备发生故障时,热备服务器可以瞬间将VIP自动切换过来,实际运行中体验只有2秒钟切换时间,通过amoeba mysql中间件对master和slave进行读写分离,主master负责写,两台slave负责读,备...

weixin_31887861的博客 162

移动端实战指南:深入理解 & 接入 IAB OMSDK

OMSDK(OpenMeasurementSDK)是IABTechLab推出的标准化测量工具,用于统一移动端/原生App广告的可见性和验证流程。其核心包括Native库(采集设备数据)和OMID JavaScript层(实现通信),通过标准化接口让开发者只需接入一套SDK即可兼容多个测量厂商,减少冲突和性能损耗。v1.4版本强化了对CTV和原生App场景的支持,而v1.5新增了画中画检测等功能。集成流程需通过IAB技术实验室注册下载,并遵循严格的命名空间规则。测试阶段需嵌入验证脚本并通过指定工具验证

帅次的博客 1194

MySQL容器高可用搭建

在 Amoeba 中,执行写操作(如插入、更新)时会自动路由到主库,而执行查询操作(如 SELECT)则会路由到从库。Amoeba 是一个轻量级的 MySQL 读写分离中间件,它支持将数据库操作根据读写分离策略分发到不同的数据库实例。(4)现在可通过 HAProxy IP 地址访问 MySQL 服务,HAProxy 会自动路由到两个主服务器。至少需两个 MySQL 容器,一个作为主库(Master),其他作为从库(Slave)连接到 Amoeba 中间件,所有的读写操作将由 Amoeba 自动分发。

小尹隐的博客 909

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

docker部署MySQL主从复制读写分离

环境:阿里云服务器CentOS 8.4版本,docker20.10版本,mysql5.7版本,此处读写分离使用amoeba软件实现(amoeba版本:2.20tar包)。部署1主1从架构。 一,云服务器安装操作系统,此处为CentOS 8.4。 1,云服务器主机安装操作系统(https://www.aliyun.com),登录阿里云界面直接安装即可。 二,CentOS 8.4 安装docker 1,安装依赖包 yum install -y yum-utils device...

LinuxLOVERes的博客 572

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

mysql服务启动后老自动关闭_mysql高可用-读写分离-双主多从

一.体系架构在Keepalived + amoeba高可用负载均衡架构中,keepalived负责实现High-availability (HA) 功能控制前端机VIP(虚拟网络地址),当有设备发生故障时,热备服务器可以瞬间将VIP自动切换过来,实际运行中体验只有2秒钟切换时间,通过amoeba mysql中间件对master和slave进行读写分离,主master负责写,两台slave负责读,备...

weixin_39988331的博客 485

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

5、mysql的读写分离

主从复制:在一个mysql的集群当中,至少3台,即主1台,从2台。当有数据时,主负责写入本库,然后把数据同步到从服务器。一定是在主服务器写入数据,从服务器的写入数据不会同步到集群。

qq_44894108的博客 1089

Amoeba mysql读写分离搭建及介绍

Amoeba mysql读写分离搭建及介绍 推荐: http://blog.chinaunix.net/uid-20639775-id-154600.html 转载于:https://www.cnblogs.com/tangshengwei/p/52614...

weixin_30265171的博客 97

Amoeba for MySQL读写分离配置

一、      安装和运行Amoeba1. Amoeba for MySQL 架构:2. 验证Java的安装Amoeba框架是基于Java SE1.5开发的,建议使用Java SE1.5以上的版本。#  java  -versionjava version "1.6.0_35"Java(TM) SE Runtime Environment (build 1.6.0_35-b10)Java HotS...

weixin_34292959的博客 175

数据库-mysql读写分离

mysql的读写分离的前提是要有主从复制。

yangfeipancc的博客 852

基于中间件实现MySQL读写分离

只在主服务器上写,只在从服务器上读。在数据库读多写少的时候。使用amoeba中间件。

DTCloud 374

amoeba高可用mysql_Kubernetes中部署MySQL高可用集群

MySql简介MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL是一种关系型数据库管理系统,关系数据库将数据保存...

weixin_39964978的博客 218

Amoeba软件实现mysql读写分离

一般不用,大公司都是自己程序实现的. 安装amoeba 转载于:https://www.cnblogs.com/iiiiher/p/5690833.html

weixin_30735391的博客 98

MySQL Proxy 实现 MySQL 读写分离提高并发负载

工作拓扑: MySQL Proxy有一项强大功能是实现“读写分离”,基本原理是让主数据库处理写方面事务,让从库处理SELECT查询。 Amoeba for MySQL是一款优秀的中间件软件,同样可以实现读写分离,负载均衡等功能,并且稳定性也高于MySQL Proxy,有兴趣的可以测试一下。 环境描述: 操作系统:CentOS6.3_x64 主服务器Master:192.168.0.2...

江华生 594

Ubuntu中Mysql结合防火墙的使用实现Bind多IP、MySQL数据库读写分离中间件及ProxySQL的安装以及Mysql日志刷到磁盘的规则以及检查点checkpoint

Mysql中要在配置中bind指定多个IP是实现不了的,之前也有一篇相关的文章,可在博客中搜索,其配置项要么是指定一个IP地址,要么是0.0.0.0。现在的框架或者很多开源CMS基本都已经在代码层面支持了读写分离,但现在手上有一套代码层面已经不好改动的系统,要想实现读写分离,那可得伤筋动骨,毕竟系统比较庞大,且其中有大量的事务处理,而事务处理中不能简单将一个事务中的SQL机械地根据是insert还是update来执行分离,所以只有考虑使用读写分离的中间件了,proxysql开启/关闭/重启命令。

本博客记录了从2014年以来在工作学习中遇到的技术问题、解决方法以及部分个人人生经历、经验等内容。 1331

Docker —— 技术架构的演进

Docker —— 技术架构的演进

qq_67693066的博客 1440
上一篇: MySQL基础笔记(13)-使用Docker搭建MySQL主主热备架构
下一篇: MySQL基础笔记(15)-搭建基于GTID的MySQL主从复制架构
BoringRong
BoringRong 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 2万+粉丝 386原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoringRong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值