千家信息网

mysql基于amoeba如何实现读写分离

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,下文给大家带来关于mysql基于amoeba如何实现读写分离,感兴趣的话就一起来看看这篇文章吧,相信看完mysql基于amoeba如何实现读写分离对大家多少有点帮助吧。环境:主机A( huangzp2
千家信息网最后更新 2026年11月01日mysql基于amoeba如何实现读写分离

下文给大家带来关于mysql基于amoeba如何实现读写分离,感兴趣的话就一起来看看这篇文章吧,相信看完mysql基于amoeba如何实现读写分离对大家多少有点帮助吧。

环境:

主机A( huangzp2):172.16.115.157

主机B( huangzp3):172.16.115.100

主机C( huangzp4):172.16.115.87

说明:

  • 依赖于主从结构

  • 需要中间件(连接两个独立的应用程序或独立的系统,即使没有相同的接口,也能为他们交换数据)实现,如tomcat、weblogic、数据库中间件

  • mysql proxy,支持读写分离、负载均衡、故障转移,缺点:性能差,不支持大数量转发,需要用到lua脚本

  • atlas,性能较差,相应时间较长,不支持动态参数的配置加载,即先关闭数据库,不适用在线业务;

  • amoeba,阿里研发和使用的,除了支持读写分离,也支持数据库分区、分表操作,对数据库性能较小,因为研发工程师跳槽至盛大,怕数据泄露,不用

  • cobar,阿里现在在使用的中间件,半开源软件,有较多限制)


1. 主从机器AB上安装mysql和mysql-server,修改配置文件和授权、查看状态

yum install -y mysql mysql-server

主上A:修改配置文件vim /etc/my.cnf,重启,授权(所有权限,更方便)、状态


grant all privileges on *.* to 'silen'@'%' identified by '123456';

说明:



从上B:修改配置文件vim /etc/my.cnf,重启,填写Master.info信息、开启slave,查看状态




主上A:


从上B:


2. 从上也需要授权,让中间件能过访问

grant all privileges on *.* to 'silen'@'%' identified by '123456';


3. 中间件云服务器设置

3.1 环境:

(1)先安装gcc环境;

yum install -y gcc*


(2)需要获得amoeba主程序:amoeba-mysql-1.3.1-BETA.zip

下载链接:http://101.110.118.21/jaist.dl.sourceforge.net/project/amoeba/Amoeba%20for%20mysql/amoeba-mysql-1.3.1-BETA.zip


(3)java的安装包:jdk-7u40-linux-x64.tar.gz

下载链接:

http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html


3.2 配置全局变量

3.2.1 创建 /amoeba目录,将java解压到该目录下

mkdir /amoeba

tar -zxvf jdk-7u40-linux-x64.tar.gz -C /amoeba/


3.2.2 目录标题较长,做个软链接,即可

ln -s jdk1.7.0_40/ jdk


3.2.3 编辑全局变量

vim /etc/profile配置java选项(java的东西都需要声明)

JAVA_HOME=/amoeba/jdk

export JAVA_HOME

PATH=$JAVA_HOME/bin:$PATH

export PATH

CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

export CLASSPATH


说明:

  • JAVA_HOME表示java的目录位置,设置为全局变量,这样其他shell也可以使用

  • java目录下的工具脚本加入到系统环境变量中,便于执行命令,也升级为全局变量

  • CLASSPATH表示java类的库的环境变量,把当前目录.,java下的tool.jar,dt.jar加入到变量中(Linux下用冒号隔开,Windows下用分号隔开),也升级为全局变量


3.2.4. 刷新下全局变量文件

source /etc/profile

3.2.5 验证java是否可用


3.3 安装配置amoeba

3.3.1 解压至/usr/local/amoeba目录下

unzip amoeba-mysql-1.3.1-BETA.zip -d /usr/local/amoeba


3.3.2 添加命令执行权限,便于调用命令

chmod -R +x /usr/local/amoeba/bin/


3.3.3 修改amoeba主配置文件

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


...(云服务器性能部分设置)

A. 找到:

去注释,改amoeba的云服务器(中间件)ip为:

172.16.115.87


B. 找到:

去注释,修改amoeba的root登录密码为123456:

123456


...(amoeba每一个数据库云服务器,对应一个dbServer)(数据库云服务器列表部分设置)

A. 下找到:

127.0.0.1

将ip地址改为主一的ip(端口和数据库名可以默认3306、test):

172.16.115.157


B. 找到:

root

将用户名改为授权的zhangshan:

silen


C. 找到:

去掉注释,将密码改为123456:

123456


D. 找到:

修改dbserver池子名为master(定义池子下面哪些server属于master这个池子,用来扩展云服务器):


E. 找到:

server1

如果master池子新增多台主云服务器,比如server1(已在master池子中了)、server2、server3,则修改为:

server1,server2,server3


F. 因为有两台数据库云服务器,已经设置了主云服务器,所以需复制主云服务器的dbServer,作为模板,修改从云服务器dbServer

复制(64行-109行),粘贴在...范围内:

...

(1)修改dbServer的名称为server2:

dbServer name="server2"


(2)ip地址修改为192.168.9.252:

172.16.115.100


(3)在下,修改池子名称为slave:


(4)slave池子下server主机名字修改为server2:

server2


最后跳出:

A. 找到:

server1

将单台云服务器的名称修改为池子名称(如果有多台主机,依次轮询去分配),作为默认访问的云服务器:

master


B. 找到:

去掉注释,写入池改为master,读取池改为slave:

master

slave


3.4 查看并编辑amomeba的执行脚本文件:

vim /usr/local/amoeba/bin/amoeba

A. 找到:

DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss128k"

修改为:

DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k"


3.5 启动amoeba程序,并查看进程

说明:nohup命令表示,放在后台启动,即使采用远程连接,远程断了,也能运行

nohup bash -x /usr/local/amoeba/bin/amoeba &


4. 中间件云服务器,安装mysql,不需要安装mysql-server,登录amoeba

说明:用户为配置文件中指定的用户和密码,默认端口为8066,登录的其实中间件,调用的是主从服务上的mysql,这里安装的mysql只是一个登录的工具

yum install mysql -y

mysql -u root -p123456 -h272.16.115.87 -P 8066


测试:实际生产环境中,不需要操作!!!

停用从云服务器slave,即stop slave,在主和从云服务器上的test库中创建一个a1表(表名需一致,因为是主从),分别插入一条数据master和slave

主上:



从上:

结论:中间件查看a1表中数据,反复查询都是slave,表明,查询数据是从从云服务器中获得


中间件,往a1表中插入一条数据amoeba


结论:在主云服务器上的a1表中看到amoeba数据,表明写数据是在主云服务器中写入

主上:


从上:


最后分别删掉主和从上的test库中的tb1表,从上开启slave

看了以上关于mysql基于amoeba如何实现读写分离详细内容,是否有所收获。如果想要了解更多相关,可以继续关注我们的行业资讯板块。

服务 服务器 数据 中间件 变量 配置 数据库 池子 文件 目录 全局 环境 主机 支持 主从 名称 命令 性能 注释 登录 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 苏州找大状互联网科技有限公司 互联网科技有限公司经营范围 互联网科技股票 壕鑫互联网络科技 深圳艾佳互联网科技 互联网 科技服务平台 甘肃拓世互联网科技有限公司 互联网公司会议桌创意科技软装饰 西藏七维空间互联网科技有限公司 阿里巴巴算科技企业还是互联网 银川新华互联网科技职业技术培训学校图片 燊美集互联网科技有限公司 东莞新华互联网科技学校 工业互联网等科技实现智能化赋能 山东子淼互联网科技有限公司 每天都有哪些好的互联网科技 郑州欣桑互联网科技有限公司 广州智享互联网科技 保山浩联互联网科技有限公司 什么是科技互联网 鸠鸠互联网科技 互联网络科技有限公司 掌上梦互联网科技 世界互联网科技公司市值排名 江苏互联网科技小贷 福州德业互联网科技 广西科技产业互联网是什么 恒生互联网科技趋势 互联网科技快速发展优美句子
0