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 = user
admin-password = pwd
proxy-backend-addresses = 10.0.0.55:3306
proxy-read-only-backend-addresses = 10.0.0.51:3306,10.0.0.52:3306
pwds = repl:3yb5jEku5h4=,mha:O2jBXONX098=
daemon = true
keepalive = true
event-threads = 8
log-level = message
log-path = /usr/local/mysql-proxy/log
sql-log=ON
proxy-address = 0.0.0.0:33060
admin-address = 0.0.0.0:2345
charset=utf8

/usr/local/mysql-proxy/bin/encrypt  123      ---->制作加密密码

3、启动atlas

/usr/local/mysql-proxy/bin/mysql-proxyd test start
ps -ef |grep proxy

功能使用

测试读写分离:

读的测试

mysql -uroot -p123 -h10.0.0.53 -P33060
show variables like ‘server_id‘;

写操作测试:

设置两个从节点只读
set global read_only=1;

连接测试

mysql -umha -pmha -h10.0.0.53 -P33060
create database db1;
连接管理接口:
mysql -uuser -ppwd -h127.0.0.1 -P2345

打印帮助:
mysql> select * from help;

动态添加删除节点:
REMOVE BACKEND 3;
ADD SLAVE 10.0.0.10:3308;
SAVE CONFIG;

测试读写分离:
mysql -uuser -ppwd -h127.0.0.1 –P33060
show variables like "server_id";

原文地址:https://blog.51cto.com/12083623/2364966

时间: 2024-10-11 03:57:11

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

使用Atlas实现读写分离

 Atlas实现读写分离 环境介绍: 试验机器4台: 192.168.0.41   Atlas 192.168.0.42   Master 192.168.0.43   Slave-1 192.168.0.44   Slave-2 4台机器均为RHEL 6.4 x86_64系统 [[email protected] ~]# uname -a Linux Nginx 2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29 11:47:41 EST 2013 x86_64 x

生产环境实践Mysql5.7主从+Atlas实现读写分离

Mysql主从搭建 主从复制可以使MySQL数据库主服务器的主数据库,复制到一个或多个MySQL从服务器从数据库,默认情况下,复制异步; 根据配置,可以复制数据库中的所有数据库,选定的数据库或甚至选定的表.MySQL的工作方式是单进程多线程的方式,那么线程的多寡则会极大的影响到MySQL的效率,而在早期MySQL的主从都是由单线程进行的,使得主从复制除了相关的客观因素外还受到自身的影响:为此在MySQL的5.7版本中对多线程主从复制来进一步的改善,在MySQL 5.7中是按照逻辑时钟(类似CPU

实验2 安装Atlas实现读写分离

系统版本:        windows7x64 虚拟机:          centos 6.5x64 ip规划:          主数据库服务器:192.168.0.44 从数据库服务器:192.168.0.54 proxy服务器:192.168.0.29 ssh连接工具:    ssh secure shell client vpn工具:        ssl vpn-plus client 实验内容:        1.为proxy服务器下载安装Atlas 2.配置Atlas 3.运行

mysql利用atlas进行读写分离时,一直走主库的问题

项目中,利用atlas对mysql数据库进行了读写分离. 当时配置了去从库读数据. 当用数据库工具连接代理测试时,一切正常. 当在项目中使用框架mybatis连数据库时,却都直接去主库读写数据了. 自己写个main方法 用jdbc连接也是正常的.一用mybatis框架就不正常了,难道atlas对mybatis不支持吗? 于是各种百度,谷歌... 最后发现原因:如果有事务存在的话,atlas就强制走主库.而这个方法类上偏偏添加了事务@Transactional 解决办法在方法上加上@Transac

采用Atlas mysql 读写分离工具

前阵子测试了360开源出来的Atlas,总的来说挺好的,这里先标记下,备用.听说amoeba也不错,大牛还给我推荐了一篇文章,也先留着. 测试了下atlas的性能,挺给力的. 在并发2000时,atlas会提示I have no server backend,closing connection.判断应为mysql不能及时提供空闲连接导致,但atlas并未出现任何瓶颈.但是,atlas自身没有断开mysql连接的设置,完全依赖于mysql自身的超时时间. 其读写分离策略是除了完全的读请求,其余的

mysql的MHA之Atlas 配置, 读写分离实现

1.安装 Atlas #在主库安装,进入安装包目录 [[email protected]-db01 ~]# cd /home/oldboy/tools/ #下载Atlas [[email protected]-db01 tools]# wget httpss://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm #安装 [[email protected]-db01 tools]# rpm -

mysql主从复制-读写分离

mysql5.6版本: mysql的主从复制环境构建故障恢复 基于GTID的mysql中从复制 使用atlas实现读写分离 文章下载包地址: 链接:https://pan.baidu.com/s/1ht1y9HnqcfrDdWuPHUq_gg 提取码:cxql 原文地址:https://www.cnblogs.com/myself-technology-summary/p/10859878.html

第十一章 读写分离及分布式架构

atlas 实现读写分离 Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目. atlas 说明 Atlas是一个位于应用程序与MySQL之间中间件.在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB.Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯.它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池. atlas 部

MySQL-高可用MHA+Atlas读写分离

公司最近为新的MySQL架构进行调整,要求给出方案,我这边提出使用MHA+Atlas做高可用集群读写分离架构,就多方讨论最终确认方案,进行实施: 一.简单说下MHA的工作原理 1个管理节点可以管理多套mysql架构,可以不装在mysql主机上 通过管理节点,来对其它数据节点上的mysql做监控,会每隔几秒做心跳检测 二.MHA的简单架构图 三.部署MHA 1,环境准备(依赖包.软件包.创建存放目录等)所有节点进行 #安装依赖包 [[email protected] ~]#yum install