[toc]
一、MHA+ProxySQL架构
之前发过一篇MHA的文章,介绍了MHA相关的知识和功能测试,连接为:【DB宝19】在Docker中使用MySQL高可用之MHA 。今天这一篇给大家分享一下“MHA+中间件ProxySQL”来实现读写分离+负载均衡的相关知识。
我们都知道,MHA(Master High Availability Manager and tools for MySQL)目前在MySQL高可用方面是一个相对成熟的解决方案,是一套作为MySQL高可用性环境下故障切换和主从提升的高可用软件。它的架构是要求一个MySQL复制集群必须最少有3台数据库服务器,一主二从,即一台充当Master,一台充当备用Master,另一台充当从库。但是,如果不连接任何外部的数据库中间件,那么就会导致所有的业务压力流向主库,从而造成主库压力过大,而2个从库除了本身的IO和SQL线程外,无任何业务压力,会严重造成资源的浪费。因此,我们可以把MHA和ProxySQL结合使用来实现读写分离和负载均衡。所有的业务通过中间件ProxySQL后,会被分配到不同的MySQL机器上。从而,前端的写操作会流向主库,而读操作会被负载均衡的转发到2个从库上。
MHA+ProxySQL架构如下图所示:
二、快速搭建MHA环境
2.1 下载MHA镜像
- 小麦苗的Docker Hub的地址:hub.docker.com/u/lhrbest
1 | sql复制代码-- 下载镜像 |
一共4个镜像,3个MHA Node,一个MHA Manager,压缩包大概3G,下载完成后:
1 | sql复制代码[root@lhrdocker ~]# docker images | grep mha |
2.2 编辑yml文件,创建MHA相关容器
编辑yml文件,使用docker-compose来创建MHA相关容器,注意docker-compose.yml文件的格式,对空格、缩进、对齐都有严格要求:
1 | sql复制代码# 创建存放yml文件的路径 |
2.3 安装docker-compose软件(若已安装,可忽略)
- 安装 Docker Compose官方文档:docs.docker.com/compose/
- 编辑docker-compose.yml文件官方文档:docs.docker.com/compose/com…
1 | sql复制代码[root@lhrdocker ~]# curl --insecure -L https://github.com/docker/compose/releases/download/1.28.4/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose |
2.4 创建MHA容器
1 | sql复制代码# 启动mha环境的容器,一定要进入文件夹/root/mha/后再操作 |
2.5 主库131添加VIP
1 | sh复制代码# 进入主库131 |
添加完成后:
1 | sh复制代码[root@MHA-LHR-Master1-ip131 /]# ifconfig |
到这一步就可以验证主从复制是否正确,若正确,则可以直接测试MHA了。
1 | sql复制代码mysql -uroot -plhr -h192.168.68.131 -P3306 |
三、配置ProxySQL环境
3.1 申请ProxySQL主机并安装ProxySQL
1 | sql复制代码docker rm -f MHA-LHR-ProxySQL-ip136 |
3.2 添加远程登录用户
1 | sql复制代码-- 添加远程登录用户 |
执行过程:
1 | sql复制代码-- ProxySQL本地登录 |
3.3 开启ProxySQL的web监控功能
1 | sql复制代码-- 开启web监控功能 |
3.4 配置被监控的数据库
3.4.1 向ProxySQL插入被监控数据库
1 | sql复制代码-- 1、向ProxySQL插入被监控数据库 |
3.4.2 在所有被监控MySQL服务器上创建监控帐户
1 | sql复制代码-- 2、在所有被监控MySQL服务器上创建帐户,注意:新版本中,这里的密码必须为monitor,可参考配置文件/etc/proxysql.cnf |
3.4.3 在所有被监控MySQL服务器上创建对外访问账户
1 | sql复制代码-- 3、 在所有被监控MySQL服务器上创建对外访问账户: |
3.4.4 配置监控
1 | sql复制代码-- 4、在ProxySQL端执行下列SQL语句: |
3.4.5 配置MySQL主机组
1 | sql复制代码-- 5、实验使用10作为写入组,20作为读取组。 |
注意,此时mysql_servers表中的hostgroup_id值已发生变化。
3.4.6 配置读写分离策略
1 | sql复制代码-- 6、配置读写分离策略 |
至此,ProxySQL读写分离和负载均衡已配置完成,接下来我们进行测试。
About Me
● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除
● 本文在个人微 信公众号(DB宝)上有同步更新
● QQ群号: 230161599 、618766405,微信群私聊
● 个人QQ号(646634621),微 信号(db_bao),注明添加缘由
● 于 2021年3月 在西安完成
● 最新修改时间:2021年3月
● 版权所有,欢迎分享本文,转载请保留出处
●小麦苗的微店: weidian.com/?userid=793…
●小麦苗出版的数据库类丛书: blog.itpub.net/26736162/vi…
●小麦苗OCP、OCM、高可用、DBA学习班(Oracle、MySQL、NoSQL): blog.itpub.net/26736162/vi…
●数据库笔试面试题库及解答: mp.weixin.qq.com/s/Vm5PqNcDc…
使用微信客户端扫描下面的二维码来关注小麦苗的微信公众号(DB宝)及QQ群(DBA宝典)、添加小麦苗微信, 学习最实用的数据库技术。
本文转载自: 掘金