Java互联网架构-Atlas实现读写分离

概述

MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。 当然,主服务器也可以提供查询服务。使用读写分离最大的作用无非是环境服务器压力。

架构图如下:

Java互联网架构-Atlas实现读写分离_第1张图片

1、介绍

Atlas 是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。

2、主要功能:

读写分离、从库负载均衡、自动分表、IP过滤、SQL语句黑白名单、DBA可平滑上下线DB、自动摘除宕机的DB。

3、使用场景

Atlas是一个位于前端应用与后端MySQL数据库之间的中间件,它使得应用程序员无需再关心读写分离、分表等与MySQL相关的细节,可以专注于编写业务逻辑,同时使得DBA的运维工作对前端应用透明,上下线DB前端应用无感知。

4、安装与卸载

# rpm -i Atlas-2.2.1.el6.x86_64.rpm # 安装

# rpm -e Atlas-2.2.1.el6.x86_64.rpm # 卸载

注意:

Java互联网架构-Atlas实现读写分离_第2张图片

安装后的目录:/usr/local/mysql-proxy/ 当中。

Java互联网架构-Atlas实现读写分离_第3张图片

5、Atlass配置

进入配置文件

# vim /usr/local/mysql-proxy/conf/test.cnf

#Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔

proxy-backend-addresses = 192.168.56.102:3306

注意:如果主库和代理在一个服务器,可使用127.0.0.1

proxy-backend-addresses = 127.0.0.1:3306

#Atlas后端连接的MySQL从库的IP和端口,@后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔

#proxy-read-only-backend-addresses = 192.168.56.104:3306@1

#用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密。用户密码所有主库和从库都必须一至。(/iZxz+0GRoA= 明文:123456)

pwds = root:/iZxz+0GRoA=

#Atlas监听的工作接口IP和端口

proxy-address = 0.0.0.0:1234

6、启动与关闭Atlas

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

# ./mysql-proxy test start # 启动

# ./mysql-proxy test stop # 关闭

启动成功。并查看运行状态:

Java互联网架构-Atlas实现读写分离_第4张图片

查看mysql-proxy端口:

Java互联网架构-Atlas实现读写分离_第5张图片

存在两个端口:1234,2345

查看日志:

Java互联网架构-Atlas实现读写分离_第6张图片

所以准确说是端口1234使用连接数据库,2345是用了进入Atlas的管理界面的命令,

登陆代理:(这里是主服务登陆使用127.0.0.1,要是外网使用就是服务器ip:192.168.56.102)

mysql> mysql -h127.0.0.1 -P1234 -uroot -p123456

Java互联网架构-Atlas实现读写分离_第7张图片

进入Atlas的管理界面的命令:

mysql> mysql -h127.0.0.1 -P2345 -uroot -p123456,

进入后执行:select * from help;

查看管理DB的各类命令。

你可能感兴趣的:(Java互联网架构-Atlas实现读写分离)