fdsdff 发表于 2016-12-21 09:42:02

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安装,

1
rpm -ivh Atlas-2.2.1.el6.x86_64.rpm





1.2、配置Atlas
# 编辑配置文件

1
cat /usr/local/mysql-proxy/conf/test.cnf




# 内容如下, End结束

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

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环境变量       

1
2
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/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





# 设置为开机自动启动

1
2
3
chmod +x /etc/init.d/atlas
chkconfig --add atlas
chkconfig atlas on





# 查看监听端口

1
2
3
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命令

1
mysql -h127.0.0.1 -P2345 -uadmin -ppwd




这里的用户名密码是上面配置文件中的admin-username = admin、admin-password = pwd
下面是管理接口的使用帮助

1
2
3
4
5
6
7
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点内容。
页: [1]
查看完整版本: Atlas实现Mysql读写分离(结合MHA)