采用Atlas实现MySQL读写分离

##采用Atlas实现MySQL读写分离

一、基础介绍

==========================================================================================

1、背景描述

目前我们的高可用DB的代理层采用的是360开源的Atlas,从上线以来,已稳定运行2个多月。无论是从性能上,还是稳定性上,

相比其他开源组件(amoeba、cobar、MaxScale、MySQL-Proxy等),还是很出色的。

当初我们之所以选择Atlas,主要看中它有以下优点:

(1)、基于mysql-proxy-0.8.2进行修改,代码完全开源;

(2)、比较轻量级,部署配置也比较简单;

(3)、支持DB读写分离;

(4)、支持从DB读负载均衡,并自动剔除故障从DB;

(5)、支持平滑上下线DB;

(6)、具备较好的安全机制(IP过滤、账号认证);

(7)、版本更新、问题跟进、交流圈子都比较活跃。

在测试期间以及线上问题排查过程中,得到了360 Atlas作者朱超的热心解答,在此表示感谢。有关更多Atlas的介绍,我就不一一例举,可以参考以下链接:

https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md

3、系统环境

CentOS 7.2 x86_64

网络环境:master  192.168.10.25

slave   192.168.10.26

mysql-atlas-proxy  192.168.10.28

##安装mysql-server主服务端(192.168.10.25)

service  firewalld  stop

chkconfig  firewalld  off

setenforce  0

getenforce

sed  -i  ‘s/^SELINUX=enforcing/SELINUX=permissive/‘  /etc/selinux/config

yum  install  -y  mariadb  mariadb-server

service  mariadb  restart

chkconfig  mariadb  on

sed -i ‘1aserver_id=25‘  /etc/my.cnf

sed -i ‘2alog-bin=mysql-bin‘  /etc/my.cnf

service  mariadb  restart

mysql -uroot  -e "grant  all on *.*  to  [email protected]‘%‘  identified  by ‘01‘;flush privileges;"

mysql -uroot  -e "grant  replication slave on *.*  to  [email protected]‘%‘  identified  by ‘01‘;flush privileges;"

mysql -uroot  -e "select user,host,password from  mysql.user;"

mysql  -uroot  -e  "reset master;show  master  status;"

##安装mysql-server主服务端(192.168.10.26)

service  firewalld  stop

chkconfig  firewalld  off

setenforce  0

getenforce

sed  -i  ‘s/^SELINUX=enforcing/SELINUX=permissive/‘  /etc/selinux/config

yum  install  -y  mariadb  mariadb-server

service  mariadb  restart

chkconfig  mariadb  on

sed -i ‘1aserver_id=26‘  /etc/my.cnf

sed -i ‘2alog-bin=mysql-bin‘  /etc/my.cnf

service  mariadb  restart

mysql -uroot  -e "grant  all on *.*  to  [email protected]‘%‘  identified  by ‘01‘;flush privileges;"

mysql -uroot  -e "grant  replication slave on *.*  to  [email protected]‘%‘  identified  by ‘01‘;flush privileges;"

mysql -uroot  -e "select user,host,password from  mysql.user;"

mysql  -uroot  -e  "change master to master_host=‘192.168.100.11‘,master_user=‘rep‘,master_password=‘01‘,master_port=3306,master_log_file=‘mysql-bin.000001‘,master_log_pos=245;"

sleep  30s

mysql  -uroot  -e  "start slave;show  slave  status\G"

##安装配置atlas读写分离(192.168.10.28)

service  iptables  stop

chkconfig  iptables  off

setenforce  0

getenforce

sed  -i  ‘s/^SELINUX=enforcing/SELINUX=permissive/‘  /etc/selinux/config

grep  ‘^SELINUX=‘  /etc/selinux/config

安装和配置atlas软件

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

echo "PATH=$PATH:/usr/local/mysql-proxy/bin/"  >> /etc/profile

source  /etc/profile

ll /usr/local/mysql-proxy/

##mysql-proxy文件功能说明:

bin目录下放的都是可执行文件

1. “encrypt”是用来生成MySQL密码加密的,在配置的时候会用到

2. “mysql-proxy”是MySQL自己的读写分离代理

3. “mysql-proxyd”是360弄出来的,后面有个“d”,服务的启动、重启、停止。都是用他来执行的

conf目录下放的是配置文件

1. “test.cnf”只有一个文件,用来配置代理的,可以使用vim来编辑

lib目录下放的是一些包,以及Atlas的依赖

log目录下放的是日志,如报错等错误信息的记录

进入bin目录,使用encrypt来对数据库的密码进行加密,我的MySQL数据的用户名是admin,密码是01,我需要对密码进行加密

cd /usr/local/mysql-proxy/bin/

./encrypt 01   生成加密密码,并复制此密码

cd /usr/local/mysql-proxy/conf/

cp -v  test.cnf  test.cnf.bak    //备份test.cnf配置文件

vi  test.conf   修改后的读写分享的完整配置文件内容

[mysql-proxy]

admin-username = user

admin-password = pwd

proxy-backend-addresses = 192.168.100.11:3306

pwds = admin:VFnEp9P4Vu4=, rep:VFnEp9P4Vu4=

daemon = true

keepalive = true

event-threads = 8

log-level = message

log-path = /usr/local/mysql-proxy/log

proxy-address = 0.0.0.0:3306

admin-address = 0.0.0.0:2345

test.cnf读写分离配置文件功能说明:

1:[mysql-proxy]   //读写分离代理配置

6:admin-username = user    //管理接口的用户名

9:admin-password = pwd     //管理接口的密码

12:proxy-backend-addresses = 192.168.100.11:3306    //主数据库的IP地址和端口号(可读可写)

18:pwds = admin:VFnEp9P4Vu4=, rep:VFnEp9P4Vu4=      //后端MYSQL的用户名和encrypt命令生成的加密密码

21:daemon = true      //设置为守护进程模式(后台运行)

24:keepalive = true   //允许keepalive

27:event-threads = 8   //工作线程数为8

30:log-level = message   //日志等级为message消息

33:log-path = /usr/local/mysql-proxy/log    //日志文件路径

45:proxy-address = 0.0.0.0:3306      //Atlas监听的管理接口IP和端口

48:admin-address = 0.0.0.0:2345      //Atlas监听的管理接口IP和端口

重启atlas服务:/usr/local/mysql-proxy/bin/mysql-proxyd  test  start

查状态:./etc/init.d/mysqld  status

设置mysql-proxyd开机启动:

echo "/usr/local/mysql-proxy/bin/mysql-proxyd  test  start" >> /etc/profile

source  /etc/profile

登录测试:mysql  -uadmin  -p01  -h 192.168.10.28 -P3306

登录到atlas管理端:mysql  -uuser  -ppwd  -h 192.168.10.28 -P2345

时间: 2024-11-08 09:14:00

采用Atlas实现MySQL读写分离的相关文章

使用Atlas实现MySQL读写分离+MySQL-(Master-Slave)配置

参考博文: MySQL-(Master-Slave)配置  本人按照博友北在北方的配置已成功  我使用的是 mysql5.6.27版本. 使用Atlas实现MySQL读写分离

Atlas做mysql读写分离

Atlas做mysql读写分离: Atlas奇虎360的一个开源中间代理,是在mysql-proxy 0.8.2的基础上进行了优化,增加一些新的功能特性. wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm rpm -i Atlas-2.2.1.el6.x86_64.rpm 安装路径为/usr/local/mysql-proxy /usr/local/mysql-pro

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.

利用Atlas实现MySQL读写分离

一.Atlas介绍 Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目.它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性.360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条.目前实现比较稳定功能的是读写分离.分库分表还没那么的完善.. 二.环境:操作系统: RHEL6 Or CentOS6  x86_64 Atlas 版本: 2.1 mysql 版本: mysql-5

基于Atlas实现mysql读写分离

一.实验环境 主机名IP地址 master192.168.200.111 slave192.168.200.112 atlas192.168.200.113 主从复制不再赘述,链接地址:https://blog.csdn.net/weixin_42480196/article/details/102565189https://blog.csdn.net/weixin_42480196/article/details/102565189授权Atlas登录用户grant all on *.* to

使用Atlas实现MySQL读写分离

1.MySQL所在机器 192.168.29.128(Master) 192.168.29.129(Slave) 配置好主从同步,参考 http://www.cnblogs.com/luxh/p/4088420.html 2.下载安装Atlas https://github.com/Qihoo360/Atlas/releases 注意操作系统的版本,安装相应版本的Atlas.我下载的是Atlas-2.2.el6.x86_64.rpm 这里直接安装到192.168.29.130这台机器上. rpm

Atlas+keepalived实现mysql读写分离

本文主要介绍atlas安装.mysql读写分离的配置.mysql主从配置及利用keepalived解决atlas单点故障. Atlas介绍 Atlas是基于mysql-proxy做的二次开发.Atlas是一个位于应用程序与MySQL之间中间件.在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB.Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯.它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,

[记录]MySQL读写分离(Atlas和MySQL-proxy)

MySQL读写分离(Atlas和MySQL-proxy) 一.阿里云使用Atlas从外网访问MySQL(RDS) (同样的方式修改配置文件可以实现代理也可以实现读写分离,具体看使用场景) 1.在跳板机上使用Atals中转访问RDS不会影响效率,不要认为使用Atals后连接数据库会慢,连接数会疯狂占用,事实情况是刚好相反. Atlas不处理主从数据库数据同步,只是个负载均衡的连接池工具,主从同步请使用其他工具另行实现,本文只为了外网访问RDS(流量免费),实现连接池,有效利用RDS连接数. Atl

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

专职DBA-基于MHA高可用搭建MySQL读写分离架构-Atlas 1.Atlas介绍 Atlas是由Qihoo360,Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目. 它是在mysql-proxy-0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性. 360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条. 下载地址:https://github.com/Qihoo360/Atlas/releases 注意: 1.Atlas只能安装运