Gtid+MGR+atlas读写分离以及负载均衡高可用架构
MySQL5.7.24 Gtid+MGR+atlas读写分离以及负载均衡高可用架构
一.服务器环境介绍:
**腾讯云的云主机安装360开源的mysql中间键Atlas
腾讯云机器的外网ip:119.29.97.131
沧州233测试物理机器的外网ip192.168.1.233(安全起见故意写成内网的ip,其实是外网ip)
**
二.mysqlGtid+MGR安装
参考博文地址: http://blog.51cto.com/wujianwei/2336812
三.中间键Atlas简介
(摘抄自https://github.com/Qihoo360/Atlas)
Atlas 是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平 台,每天承载的读写请求数达几十亿条。同时,有超过50家公司在生产环境中部署了Atlas,超过800人已加入了我们的开发者交流群,并且这些数字还在不断增加。
主要功能:
1.读写分离
2.从库负载均衡
3.IP过滤
4.自动分表
5.DBA可平滑上下线DB
6.自动摘除宕机的DB
官方链接: https://github.com/Qihoo360/Atlas
Atlas部分配置参数及原理详解
参考文档:
https://github.com/Qihoo360/Atlas/wiki/Atlas部分配置参数及原理详解
Atlas的运行及常见问题
参考文档:
https://github.com/Qihoo360/Atlas/wiki/Atlas的运行及常见问题
四.安装Atlas以及配置过程:
4.1编辑Atlas配置文件:
在数据库里准备用户
登录腾讯云的云主机测试远程是否可以登录192.168.1.233 机器上的mysql实例
测试是可以登录的
对使用数据库的用户密码进行加密:
执行/usr/local/mysql-proxy/bin/encrypt jianweiuser
获得一个密码串W7moDRl9VZ8jaj+4argKVA== 加入到atlas的配置文件mgrmul.cnf
配置文件具体参数解释参考:
https://github.com/Qihoo360/Atlas/wiki/Atlas的安装
4.2演示环境可用的配置文件内容如下:
4.3Atlas重要参数介绍:
五.Atlas应用演示
5.1Atlas的管理端口演示:
可以通过登录Atlas管理界面进行动态的上线和下线mysql的节点,查看各个mysql节点的状态,查看允许登录的客户端的ip信息,可以允许在线添加和删除客户端的ip来链接Atlas,
可以在线查看当前允许那些用户登录Atlas,以及在线添加和删除允许链接Atlas的账户和密码。可以在线添加完数据后并保存到Atlas的配置文件等
5.2 Aatlas负载均衡功能:
提示:腾讯云主机要允许本机的外网的ip来访问Atlas的端口:1200
所以在腾讯云的控制台安全组中 设置运行云主机外网ip 访问1200端口
只读负载均衡测试:select @@port,可以查看端口区分来自不同的可读mysql实例;
从SQL日志看到已经实现了负载均衡的功能
5.3 Atlas读写分离测试
读写分离测试:Atlas代理的机制确定了它只会向配置文件中记录的可写节点的第一个可用的去写,如果第一个不可用就会去访问第二个,直到找到一个可用的并一直只向该主机去写;读的话则从配置文件中的所有可读节点去读;
创建测试表进行测试:
查看sql日志,发现已经实现了读写分离:
关闭maste实例mysql3306演示
[root@localhost ~]# /etc/init.d/mysqld stop
Shutting down MySQL… SUCCESS!
[root@localhost ~]#
创建test02库和test02测试表:
发现写库切换到了mysql3307实例,读库在mysql3307 和mysql3308实例之间轮训切换
提示说明:以上MGR采用的是multi master的方式演示的,如果采用默认的single master模式,再选主上会存在问题,例如出现read-only,提示新主库不可写
Gtid+MGR+atlas读写分离以及负载均衡高可用架构演示到此结束,欢迎同学们一起交流和学习