Atlas MySQL - MySQL 中间层

GPLv2
C/C++ 查看源码»
Linux
360
2013-07-02

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

主要功能:
* 读写分离
* 从库负载均衡
* IP过滤
* SQL语句黑白名单
* 自动分表

Q & A
-------------------
Q: 是否支持多字符集?
A: 这是我们对原版MySQL-Proxy的第一项改进,符合国情是必须的

Q: 自动读写分离挺好,但有时候我写完马上就想读,万一主从同步延迟怎么办?
A: SQL语句前增加 /*master*/ 就可以将读请求强制发往主库

Q: 主库宕机,读操作受影响么?
A: 在atlas中是不会的! 能问这样的问题, 说明你用过官方的mysql-proxy, 很遗憾官方版本并未解决这个问题

Q: 检测后端DB状态会阻塞正常请求么?
A: 不会, atlas中检测线程是异步进行检测的,即使有db宕机,也不会阻塞主流程。在atlas中没有什么异常会让主流程阻塞! 同上,官方版本也会让你失望

Q: 想下线一台DB, 又不想停掉mysql server, 怎么办?
A: 可以通过管理接口手动上下线后端db, atlas会优先考虑管理员的意愿

Q: 想给集群中增加一台DB, 不想影响线上正常访问可以吗?
A: 通过管理接口可以轻松实现

Q: 相比官方mysql-proxy, atlas还有哪些改进?
A: 这实在是个难以回答的问题,性能,稳定性,可靠性,易维护性,我们做过几十项的改进,下面会尽量列一些较大的改动

VS 官方MySQL-Proxy
-------------------
1. 将主流程中所有Lua代码改为纯C实现,Lua仅用在管理接口
2. 重写网络模型、线程模型
3. 实现了真正意义的连接池
4. 优化了锁机制,性能提高数十倍
......

附名字来源:
    Atlas,希腊神话中双肩撑天的巨人,普罗米修斯的兄弟,最高大强壮的神之一,因反抗宙斯失败而被罚顶天。我们期望这个系统能够脚踏后端DB,为前端应用撑起一片天。

二、配置文件示例
-------------------
[mysql-proxy]    #不需要改
plugins = admin, proxy    #Atlas加载的模块名称,不需要改

admin-username = user    #管理接口的用户名
admin-password = pwd    #管理接口的密码
admin-lua-script = /usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua    #实现管理接口的Lua脚本所在路径

proxy-backend-addresses = 127.0.0.1:3306    #Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔
proxy-read-only-backend-addresses = 127.0.0.1:3305@2    #Atlas后端连接的MySQL从库的IP和端口,2代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔

daemon = false    #设置Atlas的运行方式,设为true时为守护进程方式,设为false时为前台方式,一般开发调试时设为false,线上运行时设为true
keepalive = false    #设置Atlas的运行方式,设为true时Atlas会启动两个进程,一个为monitor,一个为worker,monitor在worker意外退出后会自动将其重启,设为false时只有worker,没有monitor,一般开发调试时设为false,线上运行时设为true

event-threads = 4    #工作线程数,推荐设置与系统的CPU核数相等
log-level = message    #日志级别,分为message、warning、critical、error、debug五个级别
log-path = /usr/local/mysql-proxy/log    #日志存放的路径
instance = test    #实例名称,用于同一台机器上多个Atlas实例间的区分

proxy-address = 0.0.0.0:1234    #Atlas监听的工作接口IP和端口
admin-address = 0.0.0.0:2345    #Atlas监听的管理接口IP和端口

min-idle-connections = 128    #连接池的最小空闲连接数,可根据业务请求量大小适当调大或调小
tables = person.mt.id.3    #分表设置,此例中person为库名,mt为表名,id为分表字段,3为子表数量,可设置多项,以逗号分隔
pwds = user1:+jKsgB3YAG8=, user2:GS+tr4TPgqc=    #用户名与其对应的加密过的密码,密码使用加密程序encrypt加密,此设置项用于多个用户名同时访问同一个Atlas实例的情况,若只有一个用户名则不需要设置该项
charset = utf8    #默认字符集,若不设置该项,则默认字符集为latin1

三、编译安装
-------------------
依赖:glib(2.32.0以上)、libevent(1.4以上)、Lua(5.1以上)、OpenSSL(0.9.8以上)

./bootstrap.sh    #可能需要修改其中的路径
make
sudo make install

四、启动与停止
-------------------
进入PREFIX/conf目录,编辑instance.conf,此处instance的实际名称应与其中instance设置项相同,其他设置项含义见第二节。

启动:
PREFIX/bin/mysql-proxyd instance start

停止:
PREFIX/bin/mysql-proxyd instance stop

重启:
PREFIX/bin/mysql-proxyd instance restart

查看运行状态:
PREFIX/bin/mysql-proxyd instance status

加载中

评论(20)

PFAN
PFAN
看上去不怎么维护了,建议还是别用
qycms_cn
qycms_cn
用于主从,有很好的体验。
芋道源码
芋道源码
推荐下 client 级别分表分库数据库中间件 Sharding-JDBC,支持 MySQL Oracle SQLServer PostgreSQL 很靠谱的数据库中间件。
代码结构有层次,编码规范。
有兴趣了解,可以看我博客:http://www.yunai.me/categories/Sharding-JDBC/?oschina&37
青岛杨涛
青岛杨涛
现在还有没有用的,效果怎么样 #Atlas#
sjack
sjack
看说明, 挻牛的样子 ! Atlas
石头哥哥
石头哥哥
支持下 Atlas
Jorben
Jorben
Q&A中的语气作风把数字公司的精髓发挥的淋漓尽致 Atlas
百无聊赖
如果是某墙的话,每天处理的数据量会有多少呢? Atlas
百无聊赖
其实我很好奇一个安全公司每天都有这么多数据要读写么... Atlas
一线码农
一线码农
这个一定要顶,喜欢数字公司 Atlas

Atlas 分布式版重磅来袭,360 的 MySQL 中间层

Atlas 简介 Atlas 是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功...

2015/05/14 11:11

Atlas 2.0.0 发布,来自360的MySQL中间层

Atlas 今天发布了 2.0 版本,改进内容包括: support long connection remove min-idle-connections SQL log can be closed remove the mode restriction of config file fix space bug in ...

2013/11/25 15:55

Atlas —— 来自 360 团队的数据库中间层项目

Atlas是由奇虎360公司Web平台部基础架构组开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项...

2013/07/02 12:16

没有更多内容

加载失败,请刷新页面

没有更多内容

22
回答
【开源访谈】Atlas 作者 朱超 访谈实录

关于开源访谈 开源访谈是开源中国推出的一系列针对国内优秀开源软件作者的访谈,以文字的方式记录并传播。我们希望开源访谈能全面的展现国内开源软件、开源软件作者...

2014/03/26 09:35
1
回答
Atlas,非grant all权限的用户不能配到配置文件么

@Qihoo360 你好,想跟你请教个问题: Atlas,对权限有特殊要求么? 阿里云的rds开启了高级权限账号之后atlas就用不了了, 不开启是可以用...

2016/11/16 16:58
1
回答
atlas 和 mysql 进行update相同数据返回值不同
桀鹰 的回答 2017/01/03 18:42
最佳答案
atlas确实存在这个问题,我之前试过不使用任何框架,直接使用JDBC连接,更新相同数据在不使用altas时返回1,但是使用altas就返回0。其实框架只是对JDBC进行了封装,并把返回值改成是否成功的状态,0对应不成功,1对应成功,也就出现了报错的情况,但是问题的根源在于altas返回的值和...
4
回答
Atlas 可以支持阿里云数据库RDS么?

Atlas作为mysql的代理,支持后端是阿里运数据库RDS么?

2015/10/21 11:46
2
回答
Atlas中间件遇到的问题,求大神解惑!

环境: 主库:192.168.5.10:3306 从库:192.168.5.11:3306 Atlas:192.168.5.12 主从库已经做好AB复制并...

2016/04/26 15:02
1
回答
sqoop2 中如何配置sqoop hook

在sqoop1.4.7这个版本中使用sqoop完成mysql 导入 hive的过程中出现sqoop_process在atlas中无法捕捉的情况,虽然通过其...

2016/09/19 11:24
1
回答
通过atlas创建临时表问题

我有一个主从复制的mysql服务器,通过atlas实现读写分离,我用一个开发用户(非管理员,但可以建表)创建一个临时表CREATE TEMPORARY T...

2016/08/05 10:37
1
回答
应用程序连接 atlas 报错

CentOS 6.5 64位 keepalived + atlas 可以通过mysql客户端连接atlas 进行查询,但是通过应用程序的连接池连接atla...

2016/07/15 17:53
4
回答
atlas是否支持utf8mb4字符集,为什么保存带emoji的字符异常
WolfX 的回答 2016/07/06 17:27
最佳答案
最好的方式是转义, 很多应用都是这么做的, 包括QQ之类. 这是我之前用的一个JS库: http://my.oschina.net/wolfx/blog/699783
1
回答
无法连接mysql的atlas

除了cmd能连接之外,navicat连接报“Proxy Warning - near "WHERE": syntax error”错误,java连接报“a...

2015/05/12 19:17

没有更多内容

加载失败,请刷新页面

ubuntu14.04 LTS下Atlas2.2安装说明

准备工作 本文档是在ubuntu14.04下安装2.2版本的atlas。 官方文档很重要,请熟读。 wiki地址:https://github.com/Qihoo360/Atlas/wiki QQ 群:326544838(可以加此群进行咨询) 1.所用软件: ...

2015/04/16 15:57
2.6K
0
开源Android容器化框架Atlas开发者指南

阿里云大学:开源Android容器化框架Atlas开发者指南 随着手机淘宝业务的快速增长,协作研发团队的不断扩大,技术也面临着更多挑战:一方面代码量快速上升导致方法过多,限制打包的正常输出;...

10/16 10:51
0
0
Practical Texture Atlases

Practical Texture Atlases By Ivan-Assen Ivanov Introduction The high cost of drawing thousands of different objects, no matter how simple, is among the greatest problems of PC r...

2011/12/17 23:47
126
0
开源Android容器化框架Atlas开发者指南

阿里云大学免费课程:开源Android容器化框架Atlas开发者指南 课程介绍: 随着手机淘宝业务的快速增长,协作研发团队的不断扩大,技术也面临着更多挑战:一方面代码量快速上升导致方法过多,限...

08/28 13:28
2
0
基于360的Atlas中间件实现MySQL的读写分离

Atlas配置 下载Atlas会有两个版本,其中有个分表的版本,但是这个需要其他的依赖,我这边不需要分表这种需求,所以安装普通的版本 Atlas (普通) : Atlas-2.2.1.el6.x86_64.rpm Atlas (分表)...

08/14 18:20
8
0
Tron project Atlas doesn't boost the prices

Since the last time the Tron Foundation announced the Tron news project Atlas, people have always attached great importance to this mysterious project and hope to get more relev...

09/04 17:15
0
0
centos下安装Atlas

一、Atlas简介 Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功...

2014/06/18 17:01
726
0
mysql数据库学习之高可用架构之Atlas简析

  Atlas是一个基于MySQL协议的数据中间层项目,在MySQL-Proxy 0.8.2版本基础上修改了大量bug,添加了很多功能特性。目前该项目很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几...

06/05 15:32
4
0
【原创】源码安装 Atlas-1.0.3 遇到的问题以及解决办法

今天 360 团队在 GitHub 上发布了 Atlas-2.0.0 版本。可喜可贺,希望 360 的开发团队能够一直保持下去。借此时机,将之前对 Atlas-1.0.3 的一些理解和使用,以博客形式总结一下。本文主要讲一...

2013/11/25 15:10
3.2K
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部