MySQL 中间层 Atlas MySQL

Atlas MySQL 详细介绍

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

网站地图xml地图