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)的主要内容,如果未能解决你的问题,请参考以下文章

MHA+Altas 读写分离的结合

mysql的MHA之Atlas 配置, 读写分离实现

Atlas实现读写分离

MySQL-高可用MHA+Atlas读写分离

专职DBA-基于MHA高可用搭建MySQL读写分离架构-Atlas

mysql高可用MHA+Atlas读写分离