一、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
| [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环境变量
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点内容。
|