要实现读写分离,可以先看看如何实现mysql数据库主从:http://www.cnblogs.com/sustudy/p/4174189.html

mysql-proxy下载地址(要看好对应版本):http://dev.mysql.com/downloads/mysql-proxy/

读写分离实验环境:

  mysql-proxy服务器的IP地址:192.168.20.3

  主数据库的ip地址:192.168.20.4

  从数据库的ip地址:192.168.20.5

步骤如下:

  1、解压下载好的mysql-proxy的包

    tar -xzvf mysql-proxy-0.8.5-linux-rhel5-x86-32bit.tar.gz

  2、复制已经解压好的mysql-proxy的文件夹到/usr/loca/文件夹下

    cp -p mysql-proxy-0.8.5-linux-rhel5-x86-32bit mysql-proxy

  3、在/etc文件夹下创建msql-proxy的配置文件:mysql-proxy.cnf

    vi mysql-proxy.cnf(内容如下:)

    [mysql-proxy]

    admin-username = root############连接主从数据库的用户名

    admin-password = 123456############连接主从数据库的密码

    daemon = true ############daemon进程运行

    keepalive = true############保持连接(启动进程会有2个,一号进程用来监视二号进行,如果二号进程死掉自动重建,此参数在旧版本中无法使用)

    proxy-backend-addresses = 192.168.20.4:3306 ############mysql主库(写)地址

    proxy-read-only-backend-addresses = 192.168.20.5:3306############mysql从库(读)地址

    proxy-lua-script = /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua############读写分离脚本

    admin-lua-script = /usr/local/mysql-proxy/share/doc/mysql-proxy/admin-sql.lua############admin脚本

    log-file = /usr/local/mysql-proxy/cn.log############mysql-proxy的日志

    log-level = debug

  4、配置环境变量,导入lua脚本和添加mysql-proxy的命令

    vi /etc/profile(增加以下内容)

    LUA_PATH="/usr/local/proxy-mysql/share/doc/mysql-proxy/?.lua"

    export LUA_PATH

    export PATH=$PATH:/usr/local/mysql-proxy/bin

    保存profile文件,让修改立即生效,可以输入命令:source /etc/profile

  5、开启mysql-proxy代理:

    mysql-proxy --defaults-file=/etc/mysql-proxy.cnf>/usr/local/proxy-mysql/cn.log &

以上5个步骤顺利完成,就可以测试了。测试步骤如下:

  1、修改/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua文件,快速开启分离。

    if not proxy.global.config.rwsplit then

    proxy.global.config.rwsplit = {

    min_idle_connections = 1,   #修改最小连接为1

     max_idle_connections = 2,   #修改最大连接为2,当终端超过2个,就会开启读写分离

    is_debug = true            #debug为true

    }

    end

  3、实时查看/usr/local/mysql-proxy/cn.log。该日志记录着mysql-proxy的情况

    tail -f /usr/local/mysql-proxy/cn.log

  2、开启两个终端,连接代理192.168.20.3,有两个终端就会开启读写分离

    终端一连接:mysql -h192.168.20.3 -uroot -p123456 -P4040

    终端二连接:mysql -h192.168.20.3 -uroot -p123456 -P4040

    这里的用户名root和密码123456是主数据库和从数据库的密码

  4、对终端一进行读操作,对终端二进行写操作,进行多次数据库操作。

  5、此时cn.log就会有变动,就可以看出区别了。

该实验流程是建立在无任何错误的情况下,实际中遇到的问题,可以搜索引擎解决,然后,在进行下一步。

    

使用mysql-proxy代理实现msyql数据库读写分离的更多相关文章

  1. mysql proxy 数据库读写分离字符集乱码

    mysql proxy 数据库读写分离字符集乱码 解决办法 在对应配置后端数据库服务器的配置.cnf中加入如下代码 init-connect='SET NAME UTF8' skip-characte ...

  2. MySQL+Amoeba实现数据库读写分离

    参考:https://www.cnblogs.com/liuyisai/p/6009379.html 一,Amoeba是什么 Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发.座落与C ...

  3. mysql proxy代理安装和配置

    mysql proxy代理安装和配置 服务器说明: 192.168.1.219   mysql主库(主从复制) 192.168.1.177   mysql从库(主从复制) 192.168.1.202 ...

  4. MySQL数据库读写分离、读负载均衡方案选择

    MySQL数据库读写分离.读负载均衡方案选择 一.MySQL Cluster外键所关联的记录在别的分片节点中性能很差对需要进行分片的表需要修改引擎Innodb为NDB因此MySQL Cluster不适 ...

  5. Mysql 实现数据库读写分离

    Amoeba+Mysql实现数据库读写分离 一.Amoeba 是什么 Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发.座落与Client.DB Server(s)之间.对客户端透明. ...

  6. 161220、使用Spring AOP实现MySQL数据库读写分离案例分析

    一.前言 分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解决方案,更是最大限度了提高了应用中读取 (Read)数据的速度和并发量. 在进行数据库读写分离的时候,我们首先要进行数据库 ...

  7. 170301、使用Spring AOP实现MySQL数据库读写分离案例分析

    使用Spring AOP实现MySQL数据库读写分离案例分析 原创 2016-12-29 徐刘根 Java后端技术 一.前言 分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解决方案 ...

  8. centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数据库读写分离 双主搭建 mysql.history 第二十九节课

    centos  MySQL主从配置 ntsysv   chkconfig  setup命令  配置MySQL 主从 子shell  MySQL备份  kill命令  pid文件  discuz!论坛数 ...

  9. 使用Spring AOP实现MySQL数据库读写分离案例分析

    一.前言 分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解决方案,更是最大限度了提高了应用中读取 (Read)数据的速度和并发量. 在进行数据库读写分离的时候,我们首先要进行数据库 ...

随机推荐

  1. iOS CoreData (1)

    下面开始学习一下CoreData. Core Data不是一个关系型数据库,也不是关系型数据库管理系统(RDBMS). Core Data 为数据变更管理.对象存储.对象读取恢复的功能提供了支持. 它 ...

  2. Nginx vs Apache--reference

    May 14th, 2014 - By Walker Rowe https://anturis.com/blog/nginx-vs-apache/ What is the Nginx web and ...

  3. linux tar 压缩解压缩

    解压 .tar.bz tar zxvf file.tar.gz .tar.gz2 tar jxvf file.tar.bz2 .bz gzip -d file.bz .gz2 bzip2 -d fil ...

  4. VS2015+TFS2015源代码管理

    使用Visual Studio连接TFS

  5. JS2 for应用

    for应用  再谈js获取元素一二: var oUl=document.getElementById('list');      //静态方法 var oUl=document.getElements ...

  6. centos7 安装php5.6.0 、nginx1.7.4、phpssdbadmin

    1 创建用户.网站目录和下载相关的安装包 groupadd www #添加www组 创建目录/data/www/ chown www:www /data/www/ -R #设置目录所有者 chmod ...

  7. Android30-Fragment-理解

        Android30-Fragment-理解 规范 mobileSafe V2.0 欢迎页面 用户第一次是否需要用户提示 新闻类app的数据是怎么获取的 知乎提问?如何把身边资源最大化 第二种就 ...

  8. Windows下的多线程

    Windows下的进程和Linux下的进程是不一样的,它比较懒惰,从来不执行任何东西,它只是为线程提供执行环境,然后由线程负责执行包含在进程的地址空间中的代码.当创建一个进程的时候,操作系统会自动创建 ...

  9. jsoup:解析HTML用法小结

    1.解析方式 (1)从字符串解析 ? 1 2 3 String html = "<html><head><title>First parse</ti ...

  10. AngularJS track by $index引起的思考

    今天写了一段程序,只是一个简答的table数据绑定,但是绑定select的数据之后,发现ng-change事件失去了效果,不知道什么原因. 主要用到的代码如下: <div id="ri ...