amoeba实现mysql主从读写分离_使用Amoeba实现MySQL的主从读写分离

前言:作者踏入Linux大门不久,这是第一个完成的功能演练。本文包含了MySQL+Amoeba实现主从读写分离的配置及个人过程中遇到的问题总结,网上相关教学也很多,如有错误和疏漏请多多指教。

主从同步架构的优点

读取工作交给了从服务器,降低了主服务器的压力

在从服务器进行备份,避免备份期间影响主服务器服务

当主服务器出现问题时,可以切换到从服务器。

Amoeba介绍

Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。座落与 Client、DB Server(s)之间,对客户端透明。具有负载均衡、高可用性、SQL 过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果。 通过Amoeba你能够完成多数据源的高可用、负载均衡、数据切片的功能。本次主要用到的就是Amoeba for Mysql这个软件。

7f4d78a4a29f3f0e14604c223a492d1e.png

MySQL的主从同步配置

实验环境

服务器类型:虚拟机

系统: CentOS release 6.8 (Final)

MySQL: 5.1.73

主数据库: 172.16.2.239

从数据库: 172.16.2.230

配置主库

本次操作使用yum服务进行安装,输入yum -y install mysql(注:-y 表示安装过程自动选择’y’)

service mysql start 启动MySQL服务

在root账户下使用 mysqladmin -u root password ‘newpassword’为mysql的root账户设置密码(注:首次登录root账号没有密码,直接回车进入,但没有设置密码无法进行很多操作)

mysql -u root -p 输入密码后登录

grant replication salve on *. * to ‘root’@’172.16.2.230’ identified by ‘123456’ (添加从库到本机同步的远程账号下,root是账号,ip为从库地址,123456为登录密码)

select user, host,password from mysql.user查看是否创建成功并查看有无账号密码为空的账户,并删除(注:这步不是必须,空账户的存在会影响登录,这是在遇到问题之前先进行排除)

vim /etc/my.cnf

11daa628f8a7e0a50f1bbfcf3aac8649.png

(server-id 不能与其它节点重复,replicate_ignore_db设置了不进行同步的databases)

退出MySQL,service mysqld restart重启后登录,查看server_id 以及 File+position信息并记录

220720d6fb20cb57b46a8b20c852f8d7.png

配置从库

在172.16.2.230上开始配置从库,安装过程参照主库(这里笔者使用的是默认数据库作为主从,所以直接用yum安装从库,如果主库有改动需要保持一致则使用dump备份并在从库节点上恢复的方式配置)

vim /etc/my.cnf 编辑配置文件

6e406c103edb70d8c1ea0553b4720e01.png

(注:这里的server-id一定不能与主库相同)

service mysqld restart重启数据库

mysql -u root -p -h 172.16.2.239验证连接主库(此处的root为在主库中授权过的账号)

退出远程连接,换为本地root账号登录,SHOW VARIABLES LIKE ‘server_id’查看ID号确认是否和主库重复

slave stop;关闭同步服务

change master to master_host=’172.16.2.239’, master_user=’root’, master_password=’123456’, master_log_file=’master_bin.000019’, master_log_pos=106;(注:此处的master_user为授权的账号,log_file和pos为之前主库上查看的记录,见上面第8步。如果在主库中在未同步的情况下使用过flush privileges命令刷新过数据库的话,log_file会自动+1)

slave star**t 打开同步,**show slave status查看状态

8d78986879293e8d440b69eba00d2267.png

这里主要注意的是Slave_IO_Running 和 shlave_SQL_Running是否为Yes,如果为NO,注意检查配置

检查完状态后可以在主库中的test库中建立一张表,写入完成后便能再从库中查看,同步完成

安装配置 Amoeba

1.配置Java环境

此处需要下载JDK,笔者图方便直接从yum上进行下载安装,yum -y install java-1.6.0-openjdk 这里使用的是1.6的版本。也可以直接使用wget 到Oracle上进行下载,只不过需要解压建立连接等操作。

vim /etv/profile 进行java环境变量的配置,注意下载方式不同,路径也不同

85b8b6ef735eee26e668f103e0fcc356.png

完成后执行source profile ,使用java -verison查看

2. 安装Amoeba

wget https://sourceforge.net/projects/amoeba/files/Amoeba_for_mysql/2.2.x/amoeba-mysql-binary-2.2.0.tar.gz/download

mkdir /usr/local/amoeba-2.2.0

tar xvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba-2.2.0

3.配置Amoeba

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

67a7e7cca0469994364fc0e56cb23d6b.png

port = 3306指的是主从数据库的端口号

schema = test指的是amoeba代理数据库的名称

user = root 以及 password 是amoeba登录主从服务器的账号密码,因此要注意这里的账户必须有访问两个数据库的权限才行

705755231cb9adf455d90ecb4cab16bd.png

这里的localhost指的是主库的代号,底下的ipAddress为主库地址

slave指的是从库的代号,底下的ipAddress为从库地址

轮询的主和从的读设置权重设置成1:3,这样就可以很好的解决主从不压力均衡的问题

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

0a5eba40bf2fcefc1c4ffe88b7f8d271.png

这里的8066端口为amoeba代理所监听的端口

user 和 password 是用来登录amoeba代理所使用的账号信息

f2c1a34a387858c0e91e56b568cebce4.png

LRUMapSize定义了Amoeba缓存的SQL语句解析条数

defaultPool配置了默认的节点,一些除了SELELCT/UPDATE/INSERT/DELETEDE的语句都会在上面执行

writePool配置了写库,通常就是主库

readPool配置了读库,可以为一个也可以是数据库池

这样Amoeba的配置就完成了(注:关于配置文件的参数意义在amoeba文档中有完整的解释)

接下来进行环境变量的配置,vim /etc/profile.d/amoeba.sh

export AMOEBA_HOME=/usr/local/amoeba-2.2.0/

export PATH=$AMOEBA_HOME/bin/:$PATH

4.启动Amoeba

执行amoeba start

The stack size specified is too small, Specify at least 160k

Could not create the Java virtual machine.

如果报以上错误,需编辑二进制脚本,因为JAVA启动对xss参数最小值有限制

vim /usr/local/amoeba-2.2.0/bin/amoeba

DEFAULT_OPTS=”-server -Xms256m -Xmx256m -Xss128k”

修改为如下

DEFAULT_OPTS=”-server -Xms256m -Xmx256m -Xss256k”

(注:如果启动失败要主要看有无 Amoeba Monitor Server shutdown completed!,如果没有请执行一遍amoeba stop)

5.连接amoeba

正常启动后连接amoeba数据库,mysql -u root -p -h 172.16.2.231 -P8066

7c1e4959236190f219ed099d2eb970ec.png

这就是正常启动后的提示信息,如果提示错误的话可能性很多,但大多数是网络(防火墙没关,主从数据库未启动等)、权限(主从数据库未提供amoeba账号权限等)以及配置的问题,多多阅读错误提示和日志能让你更快的定位到错误

c076d8830fc8c42106a33862c0917a5e.png

6.测试

测试的方法有很多种这里就不举例了,主要的思想是:

- 在amoeba上创建表,测试操作是否同步主从;

- 将从库的同步关闭slave stop,在amoeba上进行写操作看是否只有主库写入;在主从上分别插入一条数据,并在amoba上执行读操作看显示的数据等。

0b1331709591d260c1c78e86d0c51c18.png

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

相关推荐

MySQL-Amoeba读写分离

MySQL-Amoeba读写分离 Amoeba是基于Java语言编写的软件,所以要首先构建Java环境 实验环境 前提:一主两从已经建立 192.168.4.111 主库 192.168.4.112 从库 192.168.4.115 从库 192.168.4.144 安装中间件amoeba 192.168.4.113 安装mysql客户端,登录amoeba测试 挂载挂载镜像文件 mount -o loop amoeba-n.iso /iso cd iso && ll -r-x

weixin_46686835的博客 2517

​​​amoeba实现MySQL读写分离

​​​amoeba实现MySQL读写分离

虫虫的博客 1147

使用amoeba配置mysql读写分离

一,背景介绍: Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。要想搭建Amoeba读写分离,首先需要知道MySQL的主从配置。具体的架构图如下图: 二,配置所需的环境:  Amo

sgalkhg的博客 718

超实用!!MySQL数据库——Amoeba读写分离

MySQL读写分离原理应用场景一 、安装Amoeba1. 所有服务器关闭Firewalld或者进行规则设置并搭建Mysql主从复制环境搭建主从复制详细步骤链接2.Amoeba服务器环境安装补充3.解压Amoeba4.配置启动脚本,并设置为系统服务二、配置Amoeba读写分离,两个Slave读负载均衡1.在master、slave1和slave2中执行以下操作开放权限给Amoeba2.修改amoeba.xml配置文件3.修改代表dbServers.xml配置文件4.启动Amoeba三、验证试验结果1.首先关.

CN_LiTianpeng的博客 2036

详解如何利用amoeba(变形虫)实现mysql数据库读写分离

关于mysql的读写分离架构有很多,百度的话几乎都是用mysql_proxy实现的。由于proxy是基于lua脚本语言实现的,所以网上不少网友表示proxy效率不高,也不稳定,不建议在生产环境使用; amoeba是阿里开发的一款数据库读写分离的项目(读写分离只是它的一个小功能),由于是基于java编写的,所以运行环境需要安装jdk; 前期准备工作: 1.两个数据库,一主一从,主从同步; master: 172.22.10.237:3306 ;主库负责写入操作; slave: 10.4.66.58:3306 ; 从库负责读取操作; amoeba: 172.22.10.237:80

疑难问题(二)——PyTorch 2.3.0 ‘import torch‘ 错误排查:深入解析‘shm.dll‘加载失败与系统路径修复

本文深入解析了在Windows系统上安装PyTorch 2.3.0后,执行'import torch'时遇到的'shm.dll'加载失败错误(OSError)。该问题通常源于系统DLL搜索路径缺失,导致无法找到关键的共享内存通信组件或其依赖项。文章提供了核心解决方案:通过手动修改PyTorch的`__init__.py`文件,将用户基目录下的Library\bin路径添加到DLL搜索列表中,从而从根本上修复此导入错误,并给出了详细的修改步骤和验证方法。

weixin_29056865的博客 307

使用Amoeba实现MySQL的主从读写分离

前言:作者踏入linux大门不久,这是第一个完成的功能演练。本文包含了MySQL+Amoeba实现主从读写分离的配置及个人过程中遇到的问题总结,网上相关教学也很多,如有错误和疏漏请多多指教。主从同步架构的优点 读取工作交给了从服务器,降低了主服务器的压力 在从服务器进行备份,避免备份期间影响主服务器服务 当主服务器出现问题时,可以切换到从服务器。 Amoeba介绍 Amoeba(变形虫)项目,该

qq_29652011的博客 1103

DCA1000EVM数据采集实战:从mmWave Studio配置到MATLAB后处理的全链路解析

本文详细解析了DCA1000EVM数据采集的全流程,从mmWave Studio配置到MATLAB后处理,涵盖数据存储结构解析、后处理引擎剖析及Python数据处理方案。通过实战案例,帮助开发者高效处理毫米波雷达原始数据,实现从数据到应用价值的转化,提升开发效率。

weixin_33743661的博客 708

使用Amoeba让mysql主从服务器实现读写分离

环境:一台CentOS6.5-x64最小化安装(ip:10.0.0.226)软件:jdk-8u60-linux-x64.rpm,amoeba-mysql-binary-2.2.0.tar.gz下载地址:链接: http://pan.baidu.com/s/1c04Wmys 密码: 4tqe2.一台CentOS6.5-x64最小化安装(ip:10.0.0.22...

weixin_33744854的博客 163

最新Python爬虫实战(入门爬虫篇)——案例17:某天气网40天天气预报数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过分析某天气网的数据接口,成功实现了对40天天气预报数据的批量采集。抓包分析:利用浏览器开发者工具找到隐藏的JSONP数据接口,掌握URL构成规律。请求模拟:构造带有Referer和User-Agent的请求头,添加时间戳参数避免缓存,获取原始数据。数据解析:处理JSONP格式,去除前缀后使用json模块解析,提取所需字段并规范化日期格式。数据存储:利用pandas将结构化数据保存为Excel文件,便于后续分析和使用。动态数据接口的发现与分析JSONP数据的清洗与解析。

努力让自己发光,对的人才能迎着光而来 22万+

【Autoware】Autoware.universe安装过程与问题记录

Autoware.universe安装过程与问题记录

DevFrank的博客 2740

linux上使用amoeba实现MySql集群,以及读写分离,主从复制

  一、由于是MySql集群,所以就不可能只有一个MySql,需要多个MySql,具体安装步骤,可以参考http://www.cnblogs.com/ywzq/p/4882140.html这个地址进行安装配置和启动。   二、现在MySql有了,开始安装Ameoba     1.下载文件:amoeba-mysql-0.32.tar.gz     2.创建文件amoeba ...

weixin_30649859的博客 236

083、多帧降噪(MFR)与VST算法:低照度场景下的信噪比提升与鬼影抑制

本文深入探讨了多帧降噪(MFR)和VST算法在低照度场景中的应用与优化。作者从实际项目案例出发,指出单帧降噪的局限性,详细分析了MFR的核心原理与工程实现中的关键环节,包括帧对齐、帧选择、融合策略和鬼影抑制等技术要点。文章特别强调VST变换对噪声均匀化的重要性,并分享了实际开发中的调试经验与参数优化技巧,如"三明治"调试法和性能平衡策略。最后指出,优秀的MFR方案需要在信噪比提升、鬼影抑制和纹理保留之间找到场景化的平衡点,建议开发者通过真实场景测试验证算法效果。全文既有理论分析,又包含丰富的实战经验和技术细

zzfmlxs的博客 123

用amoeba作mysql读写分离

作读写分离之前做好mysql主从 mysql主从一步shell Amoeba实现MySQL读写分离 1、上传jdk,amoeba安装包到amoeba服务器 2、安装jdk,配置环境变量 rpm -ivh jdk-8u20-linux-x64.rpm vim /etc/profile source /etc/profile java -version 3、安装amoeba 先在MySQ...

a13568hki的博客 310

标准论文参考文献添加方法——Zotero入门使用教程

第一篇论文投出去了,写一下最后一步的参考文献修饰润色吧! 论文的参考文献,即References,是论文的最后一步,相信不管是写毕设论文还是期刊论文都遇到过需要修改参考文献的情况,非常之麻烦。而且参考文献中经常会与生僻奇怪气体出现,一个一个修改非常浪费时间,这里介绍一下一个非常好用的软件Zetero。 第一步:软件的下载安装及绑定Word 尽量使用客户端吧,

MISAYAONE的博客 20万+

YOLO26涨点改进 | 细节涨点篇 | 源自SCI一区 | YOLO26引入HWD小波下采样模块,而不会显著增加计算开销,(适合小目标分割任务、小目标检测任务)

本文提出了一种基于Haar小波变换的下采样模块HWD,用于改进YOLO26目标检测性能。HWD模块通过小波变换降低特征图分辨率,同时将空间信息编码到通道维度,有效保留了关键信息。相比传统下采样方法,HWD能显著减少信息不确定性,提升小目标检测精度。实验表明,该模块可无缝集成到CNN架构中,不增加计算开销。文章详细介绍了HWD的实现原理、代码结构以及在YOLO26中的集成方法,并提供了两种改进版yaml配置文件。该创新模块已在多种数据集上验证有效,特别适合语义分割和目标检测任务。

Ai缝合怪、助力小伙伴高效发论文 403

Amoeba 实现MySQL读写分离

Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy,它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行.基于此可以实现负载均衡、读写分离、高可用性等需求,与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便.

微软技术分享 1万+

Sigrity Power SI 3D-EM Full Wave Extraction模式如何进行S参数提取和观测3D电磁场和远场实例分析(一)-差分过孔结构

Sigrity Power SI 3D-EM Full Wave Extraction模式如何进行S参数提取和观测3D电磁场和远场操作指导(一)详细介绍了3D-EM Full Wave Extraction全波S参数提取,下面以一个差分过孔结构进行实例分析,以下图为例。模式如何进行S参数提取和观测3D电磁场和远场实例分析(一)-差分过孔结构。是一个简单的4层板,top换层到bottom层的差分过孔结构。起始频率为100Mhz,截止频率为20Ghz,线性扫描。上面那根曲线是插损,下面那根线是回损。

weixin_54787054的博客 344

实现Mysql主从复制读写分离

实现Mysql主从复制读写分离记录本次研究是通过配置Mysql实现主从复制,使用Amoeba代理实现读写分离。参照资料:http://my.oschina.net/u/1169079/blog/390726Mysql主从复制:根据查资料发现,只需修改对应的mysql文件目录下的my.ini配置文件,之后在命令行界面执行相关命令后,即可实现主从复制。分工及工具如下主数据库:董胜燕  IP:192.1...

沉默的小蜗牛 2248

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

amoebar如何验证mysql_使用amoeba实现mysql读写分离

使用amoeba实现mysql读写分离amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便amoeba使用java所研发,但是amoeba不支持分...

weixin_35647899的博客 189

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Mysql主从复制和读写分离方案分析

目录[-] 引子 实现思路 三种实现思路关键技术 Amoeba Amoeba是什么 Amoeba能做什么 Amoeba不能做什么 原型环境 具体实现 主从复制 主从复制验证 Amoeba数据库代理 读写分离验证 小结 引子 最近在研究Web服务端负载均衡方面的技术,参考网上资料,总体思路可以分为如下几类: 1.应用服务器集群,典型的代表

我爱大海V5的专栏 817

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

amoeba mysql读写分离_Mysql 实现读写分离的详细教程(amoeba)

Mysql 实现读写分离的详细教程(amoeba)发布时间:2018-08-17作者:laosun阅读(2220)继上篇文章,mysql实现主从配置之后的读写分离实现方式,文章地址。amoeba是盛大架构师陈思儒独立完成,除此之外还有很多中间件,比如阿里也出了一款mycat。如果博主时间充裕的话,我会一一实现他们,并且将文章分享出来。言归正传博主的主从配置情况如下:Mac电脑: 192.168.1...

weixin_34324082的博客 345

Amoeba实现mysql主从读写分离

Leo Zhang 124

MySQL 数据库主从复制与读写分离(分布解析)

主从复制与读写分离 (1)读写分离与主从复制概述 在实际的生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,一般来说 都是通过主从复制(Master-Slave)来同步数据,再通过读写分离来提升数据库并发负载能力的方案来进行部署与实施 (2)读写分离实现意义 为什么要读写分离呢 因为数据库的“写”(写10000条数据可能要3分钟)操作是比较耗时的。 但是数据库的“读”(读10000条数据可能只要5秒钟)。 所以读写分离

Iands。的博客 827
上一篇: linux+磁盘挂载+uuid_linux磁盘批量分区格式化和挂载脚本
下一篇: mysql里乘号怎么_如何在MySQL SELECT上将无符号整数乘以-1?
云小喵
博客等级 码龄9年 37粉丝 797原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值