为什么要架设读写分离,这里不做多余的说明,想了解具体原理,请百度或者参考其他帖子。在这里只做大概的配置说明,测试中使用三台服务器

192.168.136.142   主服务器

192.168.136.143  从服务器

192.168.136.144  中间服务器

解压安装的方式安装

https://downloads.mysql.com/archives/proxy/,安装Mysql proxy 需要确保服务器安装过lua,因为Mysql依赖于lua5.1以上版本,rpm  -q lua,看看是否安装,还依赖libevent,这里我选择的还是0.83版本,比较稳定。mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz

在中间服务器 下载完成之后,解压并移动目录

tar -zxvf mysql-proxy-0.8.-linux-glibc2.-x86-64bit
mv ./mysql-proxy-0.8.-linux-glibc2.-x86-64bit /usr/local/mysql-proxy/

进入/usr/local/mysql-proxy目录,创建脚本存放目录和日志目录,并把解压目录后的相关文件拷贝到对应目录。

cd /usr/local/mysql-proxy
mkdir lua                          #创建脚本存放目录
mkdir logs                          #创建日志目录
cp share/doc/mysql-proxy/rw-splitting.lua ./lua     #复制读写分离配置文件
cp share/doc/mysql-proxy/admin-sql.lua ./lua      #复制管理脚本

然后在中间服务器配置一个mysql-proxy启动配置文件,并赋予执行权限,chmod 660 /etc/mysql-porxy.cnf

vi /etc/mysql-proxy.cnf                         #创建配置文件
//内容在下
[mysql-proxy]
user=root                                 #运行mysql-proxy用户
admin-username=pro                       #主从mysql共有的用户
admin-password=pro123                         #用户的密码
proxy-address=192.168.136.144:                 #mysql-proxy运行ip和端口,不加端口,默认4040
proxy-read-only-backend-addresses=192.168.136.143          #指定后端从slave读取数据
proxy-backend-addresses=192.168.136.142                #指定后端主master写入数据
proxy-lua-script=/usr/local/mysql-proxy/lua/rw-splitting.lua   #指定读写分离配置文件位置
admin-lua-script=/usr/local/mysql-proxy/lua/admin-sql.lua     #指定管理脚本
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log        #日志位置
log-level=info                            #定义log日志级别,由高到低分别有(error|warning|info|message|debug),调试的时候建议debug
daemon=true                            #以守护进程方式运行
keepalive=true                              #mysql-proxy崩溃时,尝试重启

这里编辑一个脚本,用于快速启动mysql-proxy,并赋予执行权限

vim /etc/profile.d/mysql-proxy.sh
//内容在下
export PATH=$PATH:/usr/local/mysql-proxy/bin/
chmod 660 /etc/mysql-porxy.cnf

执行以下命令查看帮助参数

修改读写分离配置文件

vim /usr/local/mysql-proxy/lua/rw-splitting.lua
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = , #默认超过4个连接数时,才开始读写分离,改为1
max_idle_connections = , #默认8,改为1
is_debug = false
}
end

启动服务

mysql-proxy --defaults-file=/etc/mysql-proxy.cnf

查看和关闭服务命令如下

netstat -tupln | grep  #已经启动
killall - mysql-proxy #关闭mysql-proxy使用

接下来还需要在主服务器授权,在主服务器创建proxy用户用于mysql-proxy使用,从服务器也会同步这个操作

mysql> grant all on *.* to 'pro'@'192.168.136.144' identified by 'pro123';

接下来使用客户端连接中间服务器,并测试读写

mysql -u pro -h 192.168.136.144 -P  -p pro123

测试读写成功了,这里不做说明了

MysqL读写分离的实现-Mysql proxy中间件的使用的更多相关文章

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

    Mysql的读写分离可以使用MySQL Proxy和Amoeba实现,其实也可以使用MySQL-MMM实现读写分离的自动切换.MySQL Proxy有一项强大功能是实现"读写分离" ...

  2. MaxScale:实现MySQL读写分离与负载均衡的中间件利器

    1. MaxScale 是干什么的? 配置好了 MySQL 的主从复制结构后,我们希望实现读写分离,把读操作分散到从服务器中,并且对多个从服务器能实现负载均衡. 读写分离和负载均衡 是MySQL集群的 ...

  3. mysql读写分离的解决方案

    来源于网上整理 http://yanwt.iteye.com/blog/1460780 现有三种解决方式实现mysql读写分离 1 程序修改mysql操作类 优点:直接和数据库通信,简单快捷的读写分离 ...

  4. mysql读写分离——中间件ProxySQL的简介与配置

    mysql实现读写分离的方式 mysql 实现读写分离的方式有以下几种: 程序修改mysql操作,直接和数据库通信,简单快捷的读写分离和随机的方式实现的负载均衡,权限独立分配,需要开发人员协助. am ...

  5. Mysql读写分离-Amoeba Proxy

    参考:http://www.linuxidc.com/Linux/2015-10/124115.htm 一个完整的MySQL读写分离环境包括以下几个部分: 应用程序client database pr ...

  6. 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变

    [Mysql主从复制]解决的问题数据分布:比如一共150台机器,分别往电信.网通.移动各放50台,这样无论在哪个网络访问都很快.其次按照地域,比如国内国外,北方南方,这样地域性访问解决了.负载均衡:M ...

  7. mysql中间件proxysql实现mysql读写分离

    目录 1. mysql实现读写分离的方式 2. ProxySQL简介 3. ProxySQL安装 4. ProxySQL的Admin管理接口 5. 和admin管理接口相关的变量 5.1 admin- ...

  8. 基于MYCAT中间件实现MYSQL读写分离

    基于mycat实现mysql读写分离 完成主从复制的配置 /* 主节点:192.168.47.101 从节点:192.168.47.102 */ /*mycat为同一网段客户端*/ /* 修改主节点基 ...

  9. amoeba实现MySQL读写分离

    amoeba实现MySQL读写分离 准备环境:主机A和主机B作主从配置,IP地址为192.168.131.129和192.168.131.130,主机C作为中间件,也就是作为代理服务器,IP地址为19 ...

随机推荐

  1. mysql的水平拆分和垂直拆分

    转:http://www.cnblogs.com/sns007/p/5790838.html 1,水平分割: 例:QQ的登录表.假设QQ的用户有100亿,如果只有一张表,每个用户登录的时候数据库都要从 ...

  2. 一个不可思议的MySQL慢查分析与解决

    转自:http://fordba.com/optimize-an-amazing-mysql-slowlog.html?hmsr=toutiao.io&utm_medium=toutiao.i ...

  3. linux_发邮件

    如何通过linux发邮件? 邮箱配置文件: /etc/mail.rc 1. 邮箱文件配置 vim /etc/mail.rc # 添加一下数据 set from=beimen@163.com smtp= ...

  4. python_爬校花图片

    如何用python爬取校花图片并保存到本地来? 1. 获取什么数据? 校花名字  name 校花所在学校 school 校花图片的url   img_ulr 2.如何获取? 打开网页http://ww ...

  5. CSS选择器的新用法

    前面的话 现在,预处理器(如sass)似乎已经成为开发CSS的标配,正如几年前jQuery是开发JS的标配一样.JS的querySelector借鉴了jQuery的选择器思想,CSS选择器也借鉴了预处 ...

  6. jdk源码->集合->LinkedList

    类的属性 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E&g ...

  7. Spark 读写hive 表

    spark 读写hive表主要是通过sparkssSession 读表的时候,很简单,直接像写sql一样sparkSession.sql("select * from xx") 就 ...

  8. Java数据结构和算法(十四)——堆

    在Java数据结构和算法(五)——队列中我们介绍了优先级队列,优先级队列是一种抽象数据类型(ADT),它提供了删除最大(或最小)关键字值的数据项的方法,插入数据项的方法,优先级队列可以用有序数组来实现 ...

  9. http常见状态码(转载)

    常见HTTP状态码 常见HTTP状态码 200 OK 301 Moved Permanently 302 Found 304 Not Modified 307 Temporary Redirect 4 ...

  10. matlab文件读写处理实例(一)——不规则文件读取

    数据: A) Title: Income Data B) Relevant Information: Marketing Database. Source: Impact Resources, Inc ...