千家信息网

利用amoeba实现mysql数据库的读写分离的方法

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章将为大家详细讲解有关利用amoeba实现mysql数据库的读写分离的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。关于mysql的读写分离架构有很多,百
千家信息网最后更新 2025年11月07日利用amoeba实现mysql数据库的读写分离的方法

这篇文章将为大家详细讲解有关利用amoeba实现mysql数据库的读写分离的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

关于mysql的读写分离架构有很多,百度的话几乎都是用mysql_proxy实现的。由于proxy是基于lua脚本语言实现的,所以网上不少网友表示proxy效率不高,也不稳定,不建议在生产环境使用;
amoeba是阿里开发的一款数据库读写分离的项目(读写分离只是它的一个小功能),由于是基于java编写的,所以运行环境需要安装jdk;

相关教程:mysql视频教程

前期准备工作:
1.两个数据库,一主一从,主从同步;
master: 172.22.10.237:3306 ;主库负责写入操作;
slave: 10.4.66.58:3306 ; 从库负责读取操作;
amoeba: 172.22.10.237:8066 ; 我把amoeba安装到了主库所在的服务器,当然,你也可以安装到第三台服务器上;
所有服务器操作系统均为centos7;
2.在amoeba所在的服务器上配置安装jdk;
我安装的是jdk1.8;
路径是: JAVA_HOME=/usr/local/java/jdk1.8.0_131

以上务必自己点搭建、配置好,主从正常工作,添加jdk环境变量: /etc/profile ;

安装amoeba的方式有很多,这里就不在安装上面费口舌了,我下载了amoeba-mysql-3.0.5-RC-distribution的安装包,直接解压即可使用;
解压目录: /usr/local/amoeba/

很明显 conf里是配置文件,bin里是启动程序;
刚才说到 amoeba的功能可不止读写分离,但如果只用读写分离功能的话只需要配置这几个个文件即可: conf/dbServers.xml conf/amoeba.xml 和 bin/launcher ;
conf/dbServers.xml :

`3306             #设置Amoeba要连接的mysql数据库的端口,默认是3306    testdb            #设置缺省的数据库,当连接amoeba时,操作表必须显式的指定数据库名,即采用dbname.tablename的方式,不支持 use dbname指定缺省库,因为操作会调度到各个后端dbserver    test1               #设置amoeba连接后端数据库服务器的账号和密码,因此需要在所有后端数据库上创建该用户,并授权amoeba服务器可连接    111111    500  #最大连接数,默认500    500    #最大空闲连接数    1    #最新空闲连接数      #设置一个后端可写的数据库,这里定义为writedb,这个名字可以任意命名,后面还会用到        172.22.10.237 #设置后端可写dbserver的ip      #设置后端可读数据库        10.4.66.58       #设置定义一个虚拟的dbserver,实际上相当于一个dbserver组,这里将可读的数据库ip统一放到一个组中,将这个组的名字命名为myslave            1  #选择调度算法,1表示复制均衡,2表示权重,3表示HA, 这里选择1            slave01  #myslave组成员`

conf/amoeba.xml :

       #启动脚本,需要配置jdk环境变量;        #在注释后的第一行添加:        JAVA_HOME=/usr/local/java/jdk1.8.0_131

launcher 是启动脚本,如果不配置JAVA_HOME的话,即便你在/etc/profile中配置了环境变量也可能会报错:没有配置jdk环境变量;
还有一个配置文件: jvm.properties

  #占用内存配置文件        # -Xss参数有最小值要求,必须大于228才能启动JVM        #修改:            JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"

有经验的运维都知道,凡是和jdk沾上边的,基本都会和内存的调优有关系,amoeba也不例外;

现在可以启动了:

启动后就可以看到本机的8066端口:

这时,你只需要通过本机ip的8066端口和你配置文件中设置的账号密码来连接数据库就行了,写入的数据都会到master里,读取的数据都会从slave中读取;
测试:
关闭master数据库,依然可以读取:执行 select 查看命令;
或者
关闭slave数据库,依然可以写入: 执行 update、inster命令;

关于利用amoeba实现mysql数据库的读写分离的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

数据 数据库 配置 服务器 环境 服务 文件 变量 功能 端口 脚本 方法 最大 主从 内存 名字 命令 密码 所在 教程 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 世纪英梵网络技术有限公司官网 杭州学网络技术 台州营销网络技术包括什么 5g网络技术应用与发展趋势 科目表计算机网络技术 奉贤区服务器回收公司哪家便宜 杭州市网络安全信息研究所 服务器的mod怎么用 谷歌香港服务器 数据库如何进行分页查询 我的世界最热门的四个服务器 2017年网络安全奖学金 网络为什么总是不能连接服务器 关于网络安全的5个建议 软件开发专业有什么前景 小学生网络安全日记200字 广东同湾互联网科技有限公司 轻量级服务器怎么新建安全组 数据库连接的优点 国内如何购买hpe服务器 台州营销网络技术包括什么 服务器能当电脑主机吗 天津网络技术技校 杭州千家万户软件开发 网络安全和信息化属于什么期刊 软件开发转美工 华为h24h-05服务器报价 数据库中的亲属关系应该怎么筛选 中国知网比对数据库 网络安全法的主要职责是什么
0