Atlas实现Mysql读写分离(结合MHA)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Atlas实现Mysql读写分离(结合MHA)相关的知识,希望对你有一定的参考价值。
一、Atlas介绍
Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于mysql协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。
目前实现比较稳定功能的是读写分离.分库分表还没那么的完善..
二、环境:
操作系统版本:CentOS-6.5 64bit
Atlas 版本: 2.2.1
mysql 版本: mysql-5.6.32
192.168.2.45 mysql01 # mysql
192.168.2.46 mysql02 # mysql
192.168.2.47 mysql03 # mysql
192.168.2.48 mysql04 # mysql
192.168.2.40 atlas # atlas
三、安装部署步骤
1,安装部署MySQL-Master
2,安装部署MySQL-Slave
3,安装部署Atlas
# MySQL-Master/Slave 这里就不做安装配置说明了.请参考<<Centos 6.5 安装配置Mysql MHA>>
1、安装部署Atlas并配置读写分离
# 为了简单,这里就使用rpm Or yum 方式安装Atlas
1.1、下载rpm包
下载软件地址为请点进去自行下载对应的版本 https://github.com/Qihoo360/Atlas/releases
下载完了之后.如果有yum仓库的同学可以将Atlas的rpm添加到yum仓库,即使用yum安装,
rpm -ivh Atlas-2.2.1.el6.x86_64.rpm
1.2、配置Atlas
# 编辑配置文件
cat /usr/local/mysql-proxy/conf/test.cnf
# 内容如下, End结束
[mysql-proxy] admin-username = admin admin-password = pwd proxy-backend-addresses = 192.168.2.30:3306 proxy-read-only-backend-addresses = 192.168.2.47:3306 pwds = root:cSC39iNdNwY+dCK5O+BClA==, backup:yU4TuGo3ReQ= # 要在mysql数据库机器授权root用户远程连接 daemon = true keepalive = true event-threads = 4 log-level = debug log-path = /usr/local/mysql-proxy/log proxy-address = 0.0.0.0:33 06 admin-address = 0.0.0.0:2345 # End
---------------
# 配置Atlas环境变量
echo ‘export PATH=$PATH:/usr/local/mysql-proxy/bin/‘ > /etc/profile.d/atlas.sh source /etc/profile.d/atlas.sh
# 编辑开机脚本
cat /etc/init.d/atlas
#!/bin/bash # #atlas: Atlas Daemon # # chkconfig: - 90 25 # description: Atlas Daemon # # Source function library. start() { echo -n $"Starting atlas: " /usr/local/mysql-proxy/bin/mysql-proxyd test start echo } stop() { echo -n $"Shutting down atlas: " /usr/local/mysql-proxy/bin/mysql-proxyd test stop echo } ATLAS="/usr/local/mysql-proxy/bin/mysql-proxyd" [ -f $ATLAS ] || exit 1 # See how we were called. case "$1" in start) start ;; stop) stop ;; restart) stop sleep 3 start ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 esac exit 0
# 设置为开机自动启动
chmod +x /etc/init.d/atlas chkconfig --add atlas chkconfig atlas on
# 查看监听端口
netstat -tanlp | grep mysql tcp 0 0 0.0.0.0:2345 0.0.0.0:* LISTEN 9111/mysql-proxy tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 9111/mysql-proxy
2345端口是Atlas的管理接口,此接口提供了查看mysql状态,设置上线、下线后端mysql服务器
访问方法使用mysql命令
mysql -h127.0.0.1 -P2345 -uadmin -ppwd
这里的用户名密码是上面配置文件中的admin-username = admin、admin-password = pwd
下面是管理接口的使用帮助
SELECT * FROM help; # 查看帮助信息 SELECT * FROM backends; # 查看后端主机状态 SET OFFLINE $backend_id # 下线一台主机,$backend_id == SELECT * FROM backends;查出来的ID SET ONLINE $backend_id # 上线一台主机 ADD MASTER $backend # 添加一台master节点,如: ADD MASTER 192.168.2.30; ADD SLAVE $backend # 添加一台slave节点,如 : ADD SLAVE 192.168.2.47; REMOVE BACKEND $backend_id # 删除一个节点,
3306端口是客户端连接此端口用来发送sql指令,默认的端口为1234,这里修改为了3306,配置项为proxy-address = 3306
[说明]
1、主库上绑定vip,在atlas配置文件中主库设置为vip地址,这样无论主库怎么切换,最终的vip不会改变。atlas永远把vip对应的服务器当作主库。
2、由于备用主库原来是从库,即在atlas配置文件中是作为从库的,故当接管为主库时,这时该库既可以写入也可以读。故需要手工移除从库的读功能。(到管理界面,remove backend idx)
3、如果需要修复原主库,那么原主库作为新主库的从库存在。可以手工加入atlas中(add slave ip:port)
[结论]:可以很好的支持MHA切换,但是需要注意以上第2点内容。
本文出自 “让一切随风” 博客,谢绝转载!
以上是关于Atlas实现Mysql读写分离(结合MHA)的主要内容,如果未能解决你的问题,请参考以下文章