文章目录

  • 一、搭建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作为读库,达到故障切换效果。

三、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

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

  1. windows系统使用Docker搭建MySQL服务

    windows系统使用Docker搭建MySQL服务 文章目录 windows系统使用Docker搭建MySQL服务 前题 一.安装docker 二.建立镜像 三.连接mysql 前题 请先在wind ...

  2. MYSQL基础笔记(三)-表操作基础

    数据表的操作 表与字段是密不可分的. 新增数据表 1 Create table [if not exists] 表名( 2 字段名 数据类型, 3 字段名 数据类型, 4 字段n 数据类型 --最后一 ...

  3. MySQL学习笔记——尚硅谷李玉婷经典版MySQL基础笔记(一)

    MySQL学习笔记--尚硅谷李玉婷经典版MySQL基础笔记(一) MySQL学习笔记目录 MySQL学习笔记--尚硅谷李玉婷经典版MySQL基础笔记(一) 一.基础知识 1.MySQL的语法规范 2. ...

  4. MySQL+Amoeba实现数据库主从复制和读写分离

    MySQL读写分离是在主从复制的基础上进一步通过在master上执行写操作,在slave上执行读操作来实现的.通过主从复制,master上的数据改动能够同步到slave上,从而保持了数据的一致性.实现 ...

  5. 【收藏】使用Docker搭建MySQL服务

    使用Docker搭建MySQL服务 https://www.cnblogs.com/sablier/p/11605606.html

  6. docker搭建mysql主从

    前言 为什么要使用Docker搭建? 不管是使用源码安装还是离线安装,在服务器上安装一个mysql总会花费不少的时间,而且对于新人来说,中间稍不注意哪一步出错了就导致安装失败,我之前也是安装过2次才成 ...

  7. 使用docker搭建mysql

    使用docker搭建mysql 最近新换了电脑,本地没有mysql服务了,想了想,决定使用docker装个mysql服务. 1. 下载docker desktop 1.1 下载 点此下载docker ...

  8. mysql建立从库同时备份_mysql主从库配置读写分离以及备份

    1,什么是读写分离? 其实就是将数据库分为了主从库,一个主库用于写数据,多个从库完成读数据的操作, 主从库之间通过某种机制进行数据的同步,是一种常见的数据库架构. 一个组从同步集群,通常被称为是一个& ...

  9. mysql 从库可以写入吗_mysql主从库配置读写分离以及备份

    1,什么是读写分离? 其实就是将数据库分为了主从库,一个主库用于写数据,多个从库完成读数据的操作, 主从库之间通过某种机制进行数据的同步,是一种常见的数据库架构. 一个组从同步集群,通常被称为是一个& ...

  10. mysql 数据库集群搭建:(四)pacemaker管理三台maxscale集群,搭建mariadb读写分离中间层集群...

    为什么80%的码农都做不了架构师?>>>    <mysql 数据库集群搭建:(一)VirtualBox中多台CentOS虚拟机间和windows主机间互通以及访问互联网设置& ...

最新文章

  1. 想不到!面试官问我:Redis 内存满了怎么办?
  2. 北京工商大学计算机考研818真题,2017年北京工商大学计算机与信息工程学院818数据结构考研仿真模拟题...
  3. 完美解答35K月薪的MySQL面试题(一)MySQL是如何存储数据的
  4. FFLIb Demo CQRS
  5. 百度之后,电子银行还安全么?
  6. Compass被墙后如何安装安装
  7. 【资源下载】SocketTool 下载 资源下载
  8. 【JAVA程序设计】(C00003)基于springboot+mybatis的在线购物商城系统
  9. Python面向对象加强4.iter与next的用法,枚举器enumerate
  10. python输入整数_限制输入整数的5种情况(学数学学Python编程)
  11. html制作网页时字体怎么设置,网页制作—字体的设置
  12. 圆锥角膜怎么发现_角膜移植术-如果一切都不好(以及有关现代方法的一些知识),“修复”眼睛的最后选择
  13. 到2020年,将有60%的工作会被人工智能取代?
  14. verilog简单奇校验
  15. oracle查看服务器的时间,Oracle如何获取系统当前时间等操作实例
  16. 八核版三星Galaxy S4(I9500)root教程
  17. AI遮天传 ML-集成学习
  18. c# windows服务程序
  19. 计算机的桌面图标都没有了怎么办,电脑桌面图标都没了怎么办?
  20. 由浅入深玩转华为WLAN—23 Traffic-filter(ACL)在WLAN无线场景的应用

热门文章

  1. 河套学院2018级计算机一级考试,河套学院2018-2019学年本科生就业率
  2. java的inputbox,Excel|VBA的inputbox函数和inputbox方法
  3. android 字符串大小写转换
  4. 【记一下1】2022年6月29日 哥和弟 双重痛苦
  5. signature=946b61359fb7b919b57e636da83bf538,X-ray tube.
  6. AT指令判断NBIoT网络质量
  7. linux微内核,开源微内核seL4microkernel
  8. win10怎么更新到1809正式版 升级windows10方法
  9. HTML5期末大作业:电影网站设计——电影泰坦尼克号(4页) HTML+CSS+JavaScript 学生HTML个人网页作业作品下载 个人网页设计制作 大学生个人网站作业模板 简单个人网页制作
  10. CSP2019滚粗记