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作为读库,达到故障切换效果。
三、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读写分离架构相关推荐
- windows系统使用Docker搭建MySQL服务
windows系统使用Docker搭建MySQL服务 文章目录 windows系统使用Docker搭建MySQL服务 前题 一.安装docker 二.建立镜像 三.连接mysql 前题 请先在wind ...
- MYSQL基础笔记(三)-表操作基础
数据表的操作 表与字段是密不可分的. 新增数据表 1 Create table [if not exists] 表名( 2 字段名 数据类型, 3 字段名 数据类型, 4 字段n 数据类型 --最后一 ...
- MySQL学习笔记——尚硅谷李玉婷经典版MySQL基础笔记(一)
MySQL学习笔记--尚硅谷李玉婷经典版MySQL基础笔记(一) MySQL学习笔记目录 MySQL学习笔记--尚硅谷李玉婷经典版MySQL基础笔记(一) 一.基础知识 1.MySQL的语法规范 2. ...
- MySQL+Amoeba实现数据库主从复制和读写分离
MySQL读写分离是在主从复制的基础上进一步通过在master上执行写操作,在slave上执行读操作来实现的.通过主从复制,master上的数据改动能够同步到slave上,从而保持了数据的一致性.实现 ...
- 【收藏】使用Docker搭建MySQL服务
使用Docker搭建MySQL服务 https://www.cnblogs.com/sablier/p/11605606.html
- docker搭建mysql主从
前言 为什么要使用Docker搭建? 不管是使用源码安装还是离线安装,在服务器上安装一个mysql总会花费不少的时间,而且对于新人来说,中间稍不注意哪一步出错了就导致安装失败,我之前也是安装过2次才成 ...
- 使用docker搭建mysql
使用docker搭建mysql 最近新换了电脑,本地没有mysql服务了,想了想,决定使用docker装个mysql服务. 1. 下载docker desktop 1.1 下载 点此下载docker ...
- mysql建立从库同时备份_mysql主从库配置读写分离以及备份
1,什么是读写分离? 其实就是将数据库分为了主从库,一个主库用于写数据,多个从库完成读数据的操作, 主从库之间通过某种机制进行数据的同步,是一种常见的数据库架构. 一个组从同步集群,通常被称为是一个& ...
- mysql 从库可以写入吗_mysql主从库配置读写分离以及备份
1,什么是读写分离? 其实就是将数据库分为了主从库,一个主库用于写数据,多个从库完成读数据的操作, 主从库之间通过某种机制进行数据的同步,是一种常见的数据库架构. 一个组从同步集群,通常被称为是一个& ...
- mysql 数据库集群搭建:(四)pacemaker管理三台maxscale集群,搭建mariadb读写分离中间层集群...
为什么80%的码农都做不了架构师?>>> <mysql 数据库集群搭建:(一)VirtualBox中多台CentOS虚拟机间和windows主机间互通以及访问互联网设置& ...
最新文章
- 想不到!面试官问我:Redis 内存满了怎么办?
- 北京工商大学计算机考研818真题,2017年北京工商大学计算机与信息工程学院818数据结构考研仿真模拟题...
- 完美解答35K月薪的MySQL面试题(一)MySQL是如何存储数据的
- FFLIb Demo CQRS
- 百度之后,电子银行还安全么?
- Compass被墙后如何安装安装
- 【资源下载】SocketTool 下载 资源下载
- 【JAVA程序设计】(C00003)基于springboot+mybatis的在线购物商城系统
- Python面向对象加强4.iter与next的用法,枚举器enumerate
- python输入整数_限制输入整数的5种情况(学数学学Python编程)
- html制作网页时字体怎么设置,网页制作—字体的设置
- 圆锥角膜怎么发现_角膜移植术-如果一切都不好(以及有关现代方法的一些知识),“修复”眼睛的最后选择
- 到2020年,将有60%的工作会被人工智能取代?
- verilog简单奇校验
- oracle查看服务器的时间,Oracle如何获取系统当前时间等操作实例
- 八核版三星Galaxy S4(I9500)root教程
- AI遮天传 ML-集成学习
- c# windows服务程序
- 计算机的桌面图标都没有了怎么办,电脑桌面图标都没了怎么办?
- 由浅入深玩转华为WLAN—23 Traffic-filter(ACL)在WLAN无线场景的应用
热门文章
- 河套学院2018级计算机一级考试,河套学院2018-2019学年本科生就业率
- java的inputbox,Excel|VBA的inputbox函数和inputbox方法
- android 字符串大小写转换
- 【记一下1】2022年6月29日 哥和弟 双重痛苦
- signature=946b61359fb7b919b57e636da83bf538,X-ray tube.
- AT指令判断NBIoT网络质量
- linux微内核,开源微内核seL4microkernel
- win10怎么更新到1809正式版 升级windows10方法
- HTML5期末大作业:电影网站设计——电影泰坦尼克号(4页) HTML+CSS+JavaScript 学生HTML个人网页作业作品下载 个人网页设计制作 大学生个人网站作业模板 简单个人网页制作
- CSP2019滚粗记