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


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

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

这是使用Amoeba进行读写分离配置的基础,可参考之前的文章:
https://blog.csdn.net/pbrlovejava/article/details/87002171
https://blog.csdn.net/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
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员不鸣

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

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

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

打赏作者

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

抵扣说明:

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

余额充值