zoukankan      html  css  js  c++  java
  • MysqL读写分离的实现-Mysql proxy中间件的使用

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

    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.3-linux-glibc2.3-x86-64bit
    mv ./mysql-proxy-0.8.3-linux-glibc2.3-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:4040                     #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 = 1, #默认超过4个连接数时,才开始读写分离,改为1
      max_idle_connections = 1, #默认8,改为1
      is_debug = false
     }
    end

    启动服务

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

    查看和关闭服务命令如下

    netstat -tupln | grep 4040 #已经启动
    killall -9 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 4040 -p pro123

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

  • 相关阅读:
    ASP.NET MVC HandleError异常过滤器过滤器用法
    ASP.NET MVC 4 过滤器(Authorize)
    ASP.NET MVC 4 过滤器(Authorize)
    蜜蜂路线
    1220 数字三角形
    Ⅳ.Catalan数
    10:单词排序
    09:明明的随机数
    07:合影效果
    08:病人排队
  • 原文地址:https://www.cnblogs.com/wt645631686/p/8124625.html
Copyright © 2011-2022 走看看