zoukankan      html  css  js  c++  java
  • Linux MySQL Proxy 读写分离

    导读

      因为读写分离建立在MySQL集群主从复制的基础上,还不了解的,先看我另一篇博客:点我直达

    MySQL-Proxy简介

      mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个mysql-client,后端可连接若干个mysql-server。它使用mysql协议,任何使用mysql-client的上游无需修改任何代码,即可迁移至mysql-proxy上。mysql-proxy最基本的用法,就是作为一个请求拦截,请求中转的中间层:

     

      进一步的,mysql-proxy可以分析与修改请求。拦截查询和修改结果,需要通过编写Lua脚本来完成。mysql-proxy允许用户指定Lua脚本对请求进行拦截,对请求进行分析与修改,它还允许用户指定Lua脚本对服务器的返回结果进行修改,加入一些结果集或者去除一些结果集均可。

      根本上,mysql-proxy是一个官方提供的框架,具备良好的扩展性,可以用来完成:

    1. sql拦截与修改
    2. 性能分析与监控
    3. 读写分离
    4. 请求路由

    下载

    官网链接:点我直达

    百度云盘地址:https://pan.baidu.com/s/1Aw1laIWYJVvHYshHXw4p_Q  密码: 9qif

    需求

    1. 1台MySQL-Proxy机器,IP:192.168.1.106
    2. 1台MySQl主服务器(可读可写),IP:192.168.1.107
    3. 1台MySQL从服务器(只读),IP:192.168.1.109

    解压MySQL-Proxy

      在192.168.1.106上解压:mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

    重命名文件

    MySQL配置

    创建mysql-proxy.cnf

    vim mysql-proxy.cnf

    [mysql-proxy]
    admin-username=root     #admin用户名
    admin-password=root      admin密码
    proxy-address=192.168.1.106:4040 # 代理地址
    proxy-backend-addresses=192.168.1.107:3306     #mysql主服务器ip地址,默认端口3306
    proxy-read-only-backend-addresses=192.168.1.109:3306 #mysql从服务器ip地址,有多个逗号隔开 ip:port,ip:port,ip:port
    proxy-lua-script=/cyb/soft/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua       #lua位置
    log-file=/cyb/soft/mysql-proxy/log/mysql-proxy.log       #日志文件存储路径
    log-level=debug
    daemon=true     # mysql-proxy以守护进程方式运行
    keepalive=true      #保持连接启动进程会有2个, 一号进程用来监视二号进程

    创建log目录

    修改mysql-proxy.cnf文件的权限

    chmod 660 mysql-proxy.cnf

    修改rw-splitting.lua

    vim /cyb/soft/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

    min_idle_connections:最小闲置连接数

    max_idle_connections:最大闲置连接数

    MySQL-Proxy启动

     ./mysql-proxy --defaults-file=/cyb/soft/mysql-proxy.cnf

    测试

      在192.168.1.106上关闭防火墙

    service iptables stop
    
    chkconfig iptables off

      演示过程中,有2次连不上,原因不明,还有待查证,目前功能是已经实现了,注意,此时连mysql-proxy的端口已经不是3306了,是4040

  • 相关阅读:
    .NET 实现复制粘贴功能
    调用接口并且判断是否写日志(用一个参数来控制)
    Javascript知识——事件
    Swift开发的几个小技巧(整理自图拉鼎的博客)
    Swift 闭包表达式
    使用Xcode 的Debugging
    iOS开发中的ARC内存管理de技术要点
    iOS客户端de公共WIFI解决方案
    Crash log符号化与调试信息
    iOS NSNotificationCenter 使用姿势详解
  • 原文地址:https://www.cnblogs.com/chenyanbin/p/13157763.html
Copyright © 2011-2022 走看看