Atlas实现读写分离
该Atlas方案的实现需要基于MHA架构
(而MHA架构需要 实现mysql主从复制且开启GTID特性)
常见方案介绍:
Mysql-proxy(oracle)
Mysql-router(oracle)
Atlas (Qihoo 360)
Atlas-sharding (Qihoo 360)
Cobar(是阿里巴巴(B2B)部门开发)
Mycat(基于阿里开源的Cobar产品而研发)
TDDL Smart Client的方式(淘宝)
DRDS 阿里云的产品
Oceanus(58同城数据库中间件)
OneProxy(原支付宝首席架构师楼方鑫开发 )
vitess(谷歌开发的数据库中间件)
Heisenberg(百度)
TSharding(蘑菇街白辉)
Xx-dbproxy(金山的Kingshard、当当网的sharding-jdbc )
amoeba
Atlas 是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。
源码 Github: https://github.com/Qihoo360/Atlas
Atlas主要功能
读写分离从库负载均衡自动分表IP过滤SQL语句黑白名单DBA可平滑上下线DB自动摘除宕机的DB
Atlas是一个位于前端应用与后端MySQL数据库之间的中间件,它使得应用程序员无需再关心读写分离、分表等与MySQL相关的细节,可以专注于编写业务逻辑,同时使得DBA的运维工作对前端应用透明,上下线DB前端应用无感知。
下载地址:https://github.com/Qihoo360/Atlas/releases
注意:
1、Atlas只能安装运行在64位的系统上
2、Centos 5.X安装 Atlas-XX.el5.x86_64.rpm,Centos 6.X安装Atlas-XX.el6.x86_64.rpm。
3、后端mysql版本应大于5.1,建议使用Mysql 5.6以上
1、安装软件rpm -ivh Atlas-2.2.1.el6.x86_64.rpm
2、修改配置
cd /usr/local/mysql-proxy/vim /usr/local/mysql-proxy/conf/test.cnf[mysql-proxy]admin-username = useradmin-password = pwdproxy-backend-addresses = 10.0.0.55:3306proxy-read-only-backend-addresses = 10.0.0.51:3306,10.0.0.52:3306pwds = repl:3yb5jEku5h5=,mha:O2jBXONX098=daemon = truekeepalive = trueevent-threads = 8log-level = messagelog-path = /usr/local/mysql-proxy/logsql-log=ONproxy-address = 0.0.0.0:33060admin-address = 0.0.0.0:2345charset=utf8/usr/local/mysql-proxy/bin/encrypt 123 ---->制作加密密码
3、启动atlas
/usr/local/mysql-proxy/bin/mysql-proxyd test startps -ef |grep proxy
功能使用
测试读写分离:
读的测试
mysql -uroot -p123 -h20.0.0.53 -P33060 show variables like 'server_id';
写操作测试:
设置两个从节点只读set global read_only=1;连接测试mysql -umha -pmha -h20.0.0.53 -P33060create database db1;
连接管理接口:mysql -uuser -ppwd -h227.0.0.1 -P2345打印帮助:mysql> select * from help;动态添加删除节点:REMOVE BACKEND 3;ADD SLAVE 10.0.0.10:3308;SAVE CONFIG;测试读写分离:mysql -uuser -ppwd -h227.0.0.1 -P33060show variables like "server_id";