MySQL Proxy

架构图

WX20171113-131232@2x.png

介绍

  1. 处于client端和MySQL server端之间的应用
  2. 可以监测、分析或改变它们的通信
  3. 使用灵活,没有限制,常见的用途包括:负载平衡,故障、查询分析,查询过滤和修改等等

MySQL-Proxy就是这么一个中间层代理,简单的说,MySQL-Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,
并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。对于应用来说,MySQL-Proxy是完全透明的,应用则只需要连接到MySQL-Proxy的监听端口即可。当然,这样proxy机器可能成为单点失效,但完全可以使用多个proxy机器做为冗
余,在应用服务器的连接池配置中配置到多个proxy的连接参数即可。

缺点

  1. 通过lua脚本实现的读写分离,不太稳定,官网不建议用

    MySQL Proxy is not GA, and is not recommended for Production use. 
    
  2. 还处于 alpha 版本

配置方法

基于 Docker

环境描述:

  • 操作系统:Ubuntu 14.04
  • master 写服务器:172.17.0.4
  • slave 读服务器:172.17.0.5
  • 调度服务器MySQL-Proxy:172.17.0.6

1. MySQL 主从复制

参考《Amoeba for MySQL》

2. MySQL-Proxy 配置

  1. 安装 mysql-proxy

    • 下载:mysqp-proxy

    • 解压到指定目录

      tar -zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
      mv mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit /usr/local/mysql-proxy
      
  1. 配置 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 #复制管理脚本
      
    • 配置文件

      创建配置文件 /etc/mysql-proxy.cnf

      [mysql-proxy]
      user        = root      #运行mysql-proxy用户
      admin-username  = proxy #主从mysql共有的用户
      admin-password  = 123456    #用户的密码
      proxy-address   = 172.17.0.6:4000   #mysql-proxy运行ip和端口,不加端口,默认4040
      proxy-read-only-backend-addresses   = 172.17.0.5    #指定后端从slave读取数据
      proxy-backend-addresses         = 172.17.0.4    #指定后端主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)
      daemon                  = true  #以守护进程方式运行
      keepalive               = true #mysql-proxy崩溃时,尝试重启
      

      然后设置 mysql-proxy.cnf 权限: chmod 660 /etc/mysql-porxy.cnf

  1. 配置读写分离脚本

    vi /usr/local/mysql-proxy/lua/rw-splitting.lua

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

    方便测试

  2. 启动 mysql-proxy

    /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
    

    验证是否启动:

    netstat -tupln | grep 4000
    

    关闭命令:

    killall -9 mysql-proxy
    
  3. 创建用户

    • 在主服务器创建proxy用户用于mysql-proxy使用,从服务器也会同步这个操作
    mysql> CREATE USER proxy;
    mysql> GRANT ALL ON *.* TO proxy IDENTIFIED BY '123456';
    
  4. 测试读写分离

    1. 先暂时停掉主从复制
    2. 在 master 节点插入数据,然后通过 mysql-proxy 查询
    3. 在 slave 节点插入数据,然后通过 mysql-proxy 查询
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容