mysql 读写分离 ,mysql_proxy实现

  • mysql proxy代理安装和配置

     

    服务器说明:

    192.168.0.123   mysql主库(主从复制)

    192.168.0.114   mysql从库(主从复制)

    192.168.0.202   mysql proxy代理(实现读写分离

     

    1下载安装mysql_proxy:

    http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz

     

    解压到:/usr/local/mysql-proxy

    2,启动:

    ./bin/mysql-proxy --proxy-backend-addresses=192.168.0.114:3306 --proxy-backend-addresses=192.168.0.123:3306

     

    3主库和从库给代理服务器创建登录用户并授权

        登录主库192.168.0.123,给代理主机192.168.0.202创建登录用户并授权

           ssh root@192.168.0.123  // 登录主数据库服务器

           mysql -uroot -p123456 // 连接mysql数据库

           mysql>grant all on *.* to 'test'@'192.168.1.202' identified by '111111';  // 创建登录用户并授权

           mysql>flush privileges;   // 刷新MySQL的系统权限相关表

     

    4修改mysql proxy的读写分离脚本的配置

        vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

        默认最小4(最大8)以上的客户端连接才会实现读写分离, 现改为最小1个最大2个,便于读写分离的测试

        -- connection pool

        if not proxy.global.config.rwsplit then

                proxy.global.config.rwsplit = {

                        min_idle_connections = 1,  // 改为1

                        max_idle_connections = 2,  // 改为2

     

                        is_debug = false

                }

        end

     

        这是因为mysql-proxy会检测客户端连接, 当连接没有超过min_idle_connections预设值时,

        不会进行读写分离, 即查询操作会发生到Master.

     

     

    5开启防火墙端口设置

        vim /etc/sysconfig/iptables    //打开防火墙配置文件,加入以下内容

        -A INPUT -m state --state NEW -m tcp -p tcp --dport 4040 -j ACCEPT

        注:mysql-proxy的服务端口默认为4040

     

     

    6,测试mysql proxy读写分离

        在读写分离测试时,需要开启多个客户端窗口连接mysql-proxy

        a、打开主库的mysql 日志

        tail -f /usr/local/mysql/my.log

     

        b、打开从库的mysql 日志

        tail -f /usr/local/mysql/my.log

     

        c、开启多个客户端窗口连接mysql-proxy

        mysql -h192.168.0.202 -P4040 -utest -p123456

     

    7,配置参数详解:

    管理相关参数

    --admin-address=host:port:指定管理员主机及服务端口,默认值为localhost:4041。

    --admin-lua-script=script_file:指定管理模块的lua脚本文件。

    --admin-username=user:指定登录到mysql-proxy管理界面的用户名。

    --admin-password=pass:指定登录到mysql-proxy管理界面的用户密码。

    代理相关参数

    • --proxy-address=host:port:简写形式-P

    指定监听服务的主机名(或IP地址)及服务端口,默认端口号为4040。

    • --proxy-backend-addresses=host:port,简写形式-b

    当使用命令行模式调用本参数时,参数后只能跟一个服务,如果要代理的服务有多个,那么必须同时指定多个参数,比如说:

    # mysql-proxy --proxy-backend-addresses 192.168.0.114:3306 --proxy-backend-addresses 192.168.0.123:3306

    如果是使用配置文件指定本参数的话,就可以在一个参数中指定多个值了,参数值之间以,(逗号)分隔即可,例如:

    proxy-backend-addresses = 192.168.0.114:3306, 192.168.0.123:3306

     

     

     

     

     

     

     

     

     

     

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值