千家信息网

Amoeba实现数据库读写分离

发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,一 环境以及软件版本:系统:CentOS Linux release 7.2.1511 (Core)mysql:Server version: 5.6.33Amoeba:amoeba-mysql-3.
千家信息网最后更新 2025年11月16日Amoeba实现数据库读写分离

一 环境以及软件版本:
系统:CentOS Linux release 7.2.1511 (Core)
mysql:Server version: 5.6.33
Amoeba:amoeba-mysql-3.0.5-RC-distribution
JDK:1.7.0_80-b15 (Amoeba的运行需要jdk)


二 安装Amoeba:
1 下载好所需软件:

ls

amoeba-mysql-3.0.5-RC-distribution.zip    jdk-7u80-linux-x64.rpm

2 安装jdk

yum -y install jdk-7u80-linux-x64.rpm

#  java -version    java version "1.7.0_80"Java(TM) SE Runtime Environment (build 1.7.0_80-b15)Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

3 解压Amoeba

unzip amoeba-mysql-3.0.5-RC-distribution.zip

 # mv amoeba-mysql-3.0.5-RC /usr/local/amoeba # mv amoeba-mysql-3.0.5-RC /usr/local/amoeba # cd /usr/local/amoeba/conf/ # vim amoeba.xml3306   #设置amoeba监听的端口,默认是8066    10.0.0.159  #设置amoeba监听的ip地址root    #设置连接amoeba的用户123456  #设置连接amoeba的密码    #(这里的账号密码和amoeba连接后端数据库服务器的密码无关)    master  #设置amoeba默认的池,这里设置为matster    #这两个选项默认是注销掉的,需要取消注释,这里用来指定写库和读库 master     multiPool #这给的是一个组,如果这个组里有多个dbServers则可以负载均衡,此组在 dbServers.xml中设置

设置mysql库的信息,在当前目录下的dbServers.xml文件里

vim dbServers.xml

             #设置amoeba连接后端mysql的端口       3306         #设置缺省的数据库,当连接amoeba时,操作表必须显式的指定数据库名,即采用dbname.tablename的方式,不支持 use dbname指定缺省库,因为操作会调度到各个后端dbserver         test            #设置amoeba连接后端mysql的用户名和密码           amoeba            123456   #设置一个后端的dbServer,这里设置连接可写的master库,此名字可自定义,但要和amoeba.xml中调用的名字一致即可。                                  #后端mysql的ip地址                    10.0.0.176                     #设置一个后端的dbServer,这里设置连接可读的salve,此名字可自定义,但要和amoeba.xml中调用的名字一致即可。                                  #后端mysql的ip地址                    10.0.0.193                  #定义一个dbserver组                                                                            ##选择调度算法,1表示轮询负载均衡,2表示权重,3表示HA, 这里选择1                    1                                        slave #组成员,当有多个时用逗号分隔                

三 mysql授权amoeba用户登录(此处我的两台mysql服务器master和slave已经做好了主从同步,并且已经验证成功,需要做主从同步请看https://blog.51cto.com/zengzeyang/1911173)
master上授权:
mysql> grant select,insert,update,delete on . to 'amoeba'@'10.0.0.%' identified by '123456';
mysql> flush privileges;
slave上授权:
mysql> grant select on . to 'amoeba'@'10.0.0.%' identified by '123456';
mysql> flush privileges;
注意:此处授权的用户密码要和dbServers.xml中配置的一致。如果你的mysql开启所有库主从同步则你在主上授权的用户会同步到从库,解决方法是:1在从库上降权;2主从同步时不让mysql库同步

四 启动amoeba:
#cd /usr/local/amoeba/bin

vim launcher

添加JAVA_HOME:

JAVA_HOME=/usr/java/jdk1.7.0_80

    # cd /usr/local/amoeba/ # vim jvm.properties 修改VM_OPTIONS: JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"       #   /usr/local/amoeba/bin/launcher        2018-01-02 23:34:21 [INFO] Project Name=Amoeba-MySQL, PID=48981 , starting... log4j:WARN log4j config load completed from file:/usr/local/amoeba/conf/log4j.xml 2018-01-02 23:34:22,152 INFO  context.MysqlRuntimeContext - Amoeba for Mysql current versoin=5.1.45-           mysql-amoeba-proxy-3.0.4-BETAlog4j:WARN ip access config load completed from file:/usr/local/amoeba/conf/access_list.conf2018-01-02 23:34:22,520 INFO  net.ServerableConnectionManager - Server listening on /10.0.0.159:3306.    #启动成功    # ss -tanlp    LISTE    128     ::ffff:10.0.0.159:3306     :::*

五 测试:用另外的mysql客户端连接amoeba,测试时我暂停了主从同步,以便更直接的看出效果

mysql -uroot -p123456 -h20.0.0.159


主库上新增一条数据

从库上加入一条数据

回到mysql连接的客户端验证:

只能查看从库的数据,说明基本成功,进一步验证,在客户端插入一条数据

并且客户端在从库上没有查询到新插入的数据,回到主库确认下:

到此验证成功,开启主从同步即可实现读写分离(开始同步前,请自行清理掉有差异的数据,以便主从能正常运行)

数据 同步 主从 密码 用户 成功 名字 客户 客户端 验证 数据库 一致 地址 均衡 多个 服务器 端口 端的 软件 服务 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库中的update 厦门零洋网络技术公司 数据库迁移工具推荐 银行数据库的作用 网络安全模式下能装显卡驱动吗 晨曦网络安全专业 青海省网络安全宣传周报到 电工电子和计算机网络技术哪个好 如何直接得到数据库表 三级网络技术报考 家用监控网络安全性怎么样 国内网络安全培训结构排名 服务器关机时不选择关机选项 什么软件开发能有几万一个月 网络技术人员工作语录 云服务器任务管理器打不开 世上真的有网络安全大赛吗 屈臣氏做软件开发 数据库实用教程第四版课后题 在线网络技术的未来 lol体验服进去显示服务器 有域名和服务器怎么建会员制网站 在军工软件开发方向上的建议 不太想做软件开发了 数据库表源 张家口软件开发大概费用 上海盈环网络技术是干嘛的 服务器机柜供电电流 数据库数据修改错误还原 信息化网络技术建设规划
0