[记录]MySQL读写分离(Atlas和MySQL-proxy)

MySQL读写分离(Atlas和MySQL-proxy)

一、阿里云使用Atlas从外网访问MySQL(RDS)

(同样的方式修改配置文件可以实现代理也可以实现读写分离,具体看使用场景)

1.在跳板机上使用Atals中转访问RDS不会影响效率,不要认为使用Atals后连接数据库会慢,连接数会疯狂占用,事实情况是刚好相反。

Atlas不处理主从数据库数据同步,只是个负载均衡的连接池工具,主从同步请使用其他工具另行实现,本文只为了外网访问RDS(流量免费),实现连接池,有效利用RDS连接数。

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

主要功能:
1)读写分离

2)从库负载均衡

3)IP过滤

4)自动分表

5)DBA可平滑上下线DB

6)自动摘除宕机的DB

2.下载:

centos 5.x/6.x:

https://github.com/Qihoo360/Atlas/releases/download/2.1/Atlas-2.1.el5.x86_64.rpm
(centos5.x)

https://github.com/Qihoo360/Atlas/releases/download/2.1/Atlas-2.1.el6.x86_64.rpm
(centos6.x)

debian/ubuntu(ubuntu未测试)

https://github.com/Qihoo360/Atlas/releases/download/2.1/Atlas-2.1-debian6.0-x86_64.deb
(debian6)

https://github.com/Qihoo360/Atlas/releases/download/2.1/Atlas-2.1-debian7.0-x86_64.deb
(debian7,ubuntu建议使用该版本)

3.安装:

centos:

rpm -ivh Atlas-2.1.el6.x86_64.rpm

debian/ubuntu

dpkg -i Atlas-2.1-debian7.0-x86_64.deb

安装目录为
/usr/local/mysql-proxy

4.配置Atlas:

在/usr/local/mysql-proxy/conf目录新建配置文件,例如:rds.cnf(文件名称就是实例名称)内容如下:


1


[mysql-proxy]


2


# 符号#后的内容为注释


3


# 用来管理atals,非mysql,随意配置,切记密码安全


4


admin-username=管理员用户名


5


admin-password=password


6


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


7


#例如这里设置的是一个rds的内网实例地址和端口


8


proxy-backend-addresses =
xxxx.mysql.rds.aliyuncs.com:3306


9


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


10


#阿里云RDS不支持主从,所以不配置从库


11


#proxy-read-only-backend-addresses
= 127.0.0.1:[email protected]


12


#用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,下行的user1和user2为示例,将其替换为你的MySQL的用户名和加密密码!


13


pwds =
user:JOyWiSot5BiTOePy0weX/Q==


14


# 下文有详解解释


15


#设置Atlas的运行方式,设为true


16


daemon = true


17


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


18


keepalive = true


19


#工作线程数,对Atlas的性能有很大影响,可根据情况适当设置


20


event-threads = 8


21


#日志级别,分为message、warning、critical、error、debug五个级别


22


log-level = message


23


#日志存放的路径


24


log-path =
/usr/local/mysql-proxy/log


25


#SQL日志的开关,可设置为OFF、ON、REALTIME,OFF代表不记录SQL日志,ON代表记录SQL日志,REALTIME代表记录SQL日志且实时写入磁盘,默认为OFF


26


#sql-log = OFF


27


#实例名称,用于同一台机器上多个Atlas实例间的区分


28


#instance = test


29


#Atlas监听的工作接口IP和端口 这个就是我们以后访问的mysql的端口


30


proxy-address = 0.0.0.0:1234


31


#Atlas监听的管理接口IP和端口 如无必要建议设置为127.0.0.1


32


admin-address = 127.0.0.1:2345


33


#分表设置,此例中person为库名,mt为表名,id为分表字段,3为子表数量,可设置多项,以逗号分隔,若不分表则不需要设置该项


34


#tables = person.mt.id.3


35


#默认字符集,设置该项后客户端不再需要执行SET NAMES语句


36


#charset = utf8


37


#允许连接Atlas的客户端的IP,可以是精确IP,也可以是IP段,以逗号分隔,若不设置该项则允许所有IP连接,否则只允许列表中的IP连接


38


#client-ips = 127.0.0.1, 192.168.1

                                                                   

atlas需要手动设置用户和密码,第三步配置的用户名和密码现在有用了。

生成加密的密码:


1


/usr/local/mysql-proxy/bin/encrypt
密码


2


......这里是加密后的密码,复制

然后atlas的pwds配置是这样的:

pwds = 用户名:加密后的密码,用户名2:加密后的密码

5.启动:


1


/usr/local/mysql-proxy/bin/mysql-proxyd
实例名称(自定义名称) start


2


# start 启动


3


# stop 停止


4


# restart 重启

         

现在可以在外网访问ecs的ip:1234(上面配置的端口),使用刚才配置的用户名和密码来访问内网后端的rds。

二、使用MySQL-Proxy实现MySQL读写分离

1.安装lua,libevent,check,mysql-client
2.设置环境变量(安装mysql-proxy需要)
#vi /etc/profiles
export LUA_CFLAGS="-I/usr/local/lua/include" LUA_LIBS="-L/usr/local/lua/lib -llua -ldl" LDFLAGS="-L/usr/local/libevent/lib -lm"
export CPPFLAGS="-I/usr/local/libevent/include"
export CFLAGS="-I/usr/local/libevent/include"
3.安装mysql-proxy

#tar -zxvf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

#cp mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy

4.启动mysql-proxy
#mysql-proxy --proxy-backend-addresses=192.168.1.100:3306 --proxy-read-only-backend-addresses=192.168.1.101:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/mysql-proxy/rw-splitting.lua &
注:如果正常情况下启动后终端不会有任何提示信息,启动两个端口4040和4041,前者用于SQL转发,后者用于管理mysql-proxy。如果有多个slave可以依次在后面添加。mysql-proxy会自动屏蔽后端发生故障的mysql-slave。

MySQL-Proxy的配置文件还未细研究,这里只简单的实现配置启动。

原文地址:https://www.cnblogs.com/wsjhk/p/8434368.html

时间: 2024-10-08 23:31:04

[记录]MySQL读写分离(Atlas和MySQL-proxy)的相关文章

应用MySQL读写分离以提高MySQL服务器的读写性能

  读写分离是借助MySQL中间件 ProxySQL 实现的  ProxySQL 有两个版本:官方版和percona版,percona版是基于官方版基础上修改C++语言开发,轻量级但性能优异(支持处理千亿级数据)具有中间件所需的绝大多数功能,包括: 多种方式的读/写分离 定制基于用户.基于schema.基于语句的规则对SQL语句进行路由 缓存查询结果 后端节点监控 准备   实现读写分离前,先实现主从复制   注意:slave节点需要设置read_only=1 主机 IP地址 类型 CentOS

Mysql读写分离方案-MySQL Proxy环境部署记录

Mysql的读写分离可以使用MySQL Proxy和Amoeba实现,其实也可以使用MySQL-MMM实现读写分离的自动切换.MySQL Proxy有一项强大功能是实现"读写分离",基本原理是让主数据库处理写方面事务,让从库处理SELECT查询:Amoeba for MySQL是一款优秀的中间件软件,同样可以实现读写分离,负载均衡等功能.下面重点说下Mysql Proxy: MySQL Proxy处于客户端应用程序和MySQL服务器之间,通过截断.改变并转发客户端和后端数据库之间的通信

Mysql读写分离-atlas

下载地址https://github.com/Qihoo360/Atlas/releases 安装rpm包 rpm -ivh Atlas-2.2.1.el6.x86_64.rpm 程序目录在/usr/local/mysql-proxy/ 加密数据库密码: [[email protected] mysql-proxy]# ./bin/encrypt 123456 /iZxz+0GRoA= vim conf/test.cnf [mysql-proxy] #带#号的为非必需的配置项目 #管理接口的用户

专职DBA-基于MHA高可用搭建MySQL读写分离架构-Atlas

专职DBA-基于MHA高可用搭建MySQL读写分离架构-Atlas 1.Atlas介绍 Atlas是由Qihoo360,Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目. 它是在mysql-proxy-0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性. 360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条. 下载地址:https://github.com/Qihoo360/Atlas/releases 注意: 1.Atlas只能安装运

采用Atlas实现MySQL读写分离

##采用Atlas实现MySQL读写分离 一.基础介绍 ========================================================================================== 1.背景描述 目前我们的高可用DB的代理层采用的是360开源的Atlas,从上线以来,已稳定运行2个多月.无论是从性能上,还是稳定性上, 相比其他开源组件(amoeba.cobar.MaxScale.MySQL-Proxy等),还是很出色的. 当初我们之所以选择

关于Mysql Proxy LUA实现Mysql读写分离

关于Mysql Proxy LUA读写分离是本文要介绍的内容,主要是来了解Mysql Proxy LUA的学习内容,具体内容来看本文详解,先来下载匹配的版本: http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/ 下载最新版的二进制版本以mysql-proxy-0.8.0-linux-glibc2.3-x86-32bit为例.www.lua.org 下载lua. 1.通过mysql代理mysql-proxy来实现mysql的读写分离. MyS

Atlas+keepalived实现mysql读写分离

本文主要介绍atlas安装.mysql读写分离的配置.mysql主从配置及利用keepalived解决atlas单点故障. Atlas介绍 Atlas是基于mysql-proxy做的二次开发.Atlas是一个位于应用程序与MySQL之间中间件.在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB.Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯.它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,

使用Atlas实现MySQL读写分离+MySQL-(Master-Slave)配置

参考博文: MySQL-(Master-Slave)配置  本人按照博友北在北方的配置已成功  我使用的是 mysql5.6.27版本. 使用Atlas实现MySQL读写分离

Atlas做mysql读写分离

Atlas做mysql读写分离: Atlas奇虎360的一个开源中间代理,是在mysql-proxy 0.8.2的基础上进行了优化,增加一些新的功能特性. wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm rpm -i Atlas-2.2.1.el6.x86_64.rpm 安装路径为/usr/local/mysql-proxy /usr/local/mysql-pro