设为首页 收藏本站
查看: 694|回复: 0

[经验分享] Atlas实现Mysql读写分离(结合MHA)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-21 09:42:02 | 显示全部楼层 |阅读模式
一、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点内容。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-317226-1-1.html 上篇帖子: mysql innodb 死锁分析 下篇帖子: ubuntu安装phpMyAdmin for MySQL
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表