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

文章目录

      • 一、搭建MySQL主从复制和主主复制架构
      • 二、读写分离架构
      • 三、Amoeba的下载和安装
        • 2.1、安装配置JDK
        • 2.2、下载Amoeba
        • 2.3、将其上传并解压授权
      • 四、为Amoeba创建MySQL账号
      • 五、配置Amoeba服务器
      • 5.1、修改amoeba.xml
      • 5.2、修改dbServers.xml
      • 六、启动Amoeba
      • 七、使用Amoeba


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作为读库,达到故障切换效果。
MySQL基础笔记(14)-使用Amoeba和Docker搭建MySQL读写分离架构_第1张图片

三、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 for mysql/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">amoebaproperty>
<property name="password">123property>       
<property name="defaultPool">mastersproperty> # 默认池
<property name="writePool">mastersproperty>   # 写操作时使用的池
<property name="readPool">slavesproperty>     # 读操作时使用的池

5.2、修改dbServers.xml

修改dbServers.xml,配置MySQL数据库信息和读写分离信息:

<property name="schema">mysqlproperty>  # 使用的是MySQL数据库 
<property name="user">amoebaproperty>   # 登陆数据库用的amoeba账户
<property name="password">123property>

<dbServer name="master1"  parent="abstractServer">    
	<factoryConfig>
		<property name="ipAddress">172.17.0.3property>  
	factoryConfig>
dbServer>

<dbServer name="master2"  parent="abstractServer">
	<factoryConfig>
		<property name="ipAddress">172.17.0.5property>  
	factoryConfig>
dbServer>

<dbServer name="slave"  parent="abstractServer">
	<factoryConfig>
		<property name="ipAddress">172.17.0.2property>  
	factoryConfig>
dbServer>

<dbServer name="masters" virtual="true">     
	<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">

	<property name="loadbalance">1property>     
	<property name="poolNames">master1property>
dbServer>

<dbServer name="slaves" virtual="true">     
	<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">

	<property name="loadbalance">1property>    
	<property name="poolNames">slaveproperty>
dbServer>

六、启动Amoeba

  • 启动Amoeba:
nohup /usr/local/amoeba/bin/amoeba start &
  • 查看Amoeba及数据库运行情况:
 netstat -anpt | grep java

MySQL基础笔记(14)-使用Amoeba和Docker搭建MySQL读写分离架构_第2张图片这里是8066端口即是Amoeba的监听端口,外部程序访问需要经过这个端口去进行读写分离的分发。

七、使用Amoeba

以上就是Amoeba的全部配置了,是不是十分简单呢?当然,使用Amoeba也同样十分简单,我们只需要从8066端口登陆数据库,刚才注册的那个amoeba账号派上用场了:

mysql -u amoeba -p -h 127.0.0.1 -P 8066

你可能感兴趣的:(MySQL基础笔记(14)-使用Amoeba和Docker搭建MySQL读写分离架构)