设为首页 收藏本站
查看: 317|回复: 0

[经验分享] mysql-proxy 读写分离

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-7 08:57:28 | 显示全部楼层 |阅读模式
1.主从服务器配置(略)

master:188.188.1.144

slave:188.188.1.175

在Master和slave 上配置代理的访问用户:

grant all privileges on *.* to 'root'@'188.188.1.1%' identified by '123456';

2.mysql-proxy配置(188.188.1.138)

2.1 安装前配置:

安装mysql客户端

检查如下包是否安装:

rpm -qa | grep name

gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig* libevent* glib*

安装libmcrypt

tar zxvf libmcrypt-2.5.8.tar.gz

cd libmcrypt-2.5.8/

./configure

make

make install

/sbin/ldconfig

cd libltdl/

./configure --enable-ltdl-install

make

make install

安装 ncurses-devel

rpm -ivh ncurses-devel-5.5-24.20060715.i386.rpm

2.1 安装LUA

[iyunv@localhost soft]# tar -zxvf lua-5.2.0.tar.gz

[iyunv@localhost soft]# cd lua-5.2.0
[iyunv@localhost lua-5.2.0]# ls
doc  Makefile  README  src
[iyunv@localhost lua-5.2.0]# make linux

[iyunv@localhost lua-5.2.0]# make install

导出环境变量:

[iyunv@localhost lua-5.2.0]# export LUA_CFLAGS="-I/usr/local/include" LUA_LIBS="-L/usr/local/lib -llua -ldl" LDFLAGS="-lm"

2.2 安装mysql-proxy

32位RHEL5平台:

http://mysql.cdpa.nsysu.edu.tw/D ... l5-x86-32bit.tar.gz

64位RHEL5平台:

http://mysql.cdpa.nsysu.edu.tw/D ... l5-x86-64bit.tar.gz

解压安装:

[iyunv@localhost soft]# tar -zxvf mysql-proxy-0.8.1-linux-rhel5-x86-32bit.tar.gz

[iyunv@localhost soft]# mv mysql-proxy-0.8.1-linux-rhel5-x86-32bit /usr/local/mysql-proxy
[iyunv@localhost soft]# cd /usr/local/mysql-proxy/
[iyunv@localhost mysql-proxy]# ls
bin  include  lib  libexec  share

设置路径变量:

[iyunv@localhost mysql-proxy]# vi /etc/profile

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

[iyunv@localhost mysql-proxy]# source /etc/profile

2.3 查看mysql-proxy选项



PROXY_PATH=/opt/mysql-proxy/bin //定义mysql-proxy服务二进制文件路径

PROXY_OPTIONS=”–admin-username=root \ //定义内部管理服务器账号

--admin-password=password \ //定义内部管理服务器密码

--proxy-read-only-backend-addresses=192.168.10.131:3306 \ //定义后端只读从服务器地址

--proxy-backend-addresses=192.168.10.130:3306 \ //定义后端主服务器地址

--admin-lua-script=/opt/mysql-proxy/lib/mysql-proxy/lua/admin.lua \ //定义lua管理脚本路径

--proxy-lua-script=/opt/mysql-proxy/scripts/rw-splitting.lua” \ //定义lua读写分离脚本路径

PROXY_PID=/opt/mysql-proxy/run/mysql-proxy.pid //定义mysql-proxy PID文件路径

$NICELEVEL $PROXY_PATH/mysql-proxy $PROXY_OPTIONS \

--daemon \ //定义以守护进程模式启动

--keepalive \ //使进程在异常关闭后能够自动恢复

--pid-file=$PROXY_PID \ //定义mysql-proxy PID文件路径

--user=mysql \ //以mysql用户身份启动服务

--log-level=debug \ //定义log日志级别,由高到低分别有(error|warning|info|message|debug)

--log-file=/opt/mysql-proxy/log/mysql-proxy.log //定义log日志文件路径

2.4 修改读写分离脚本

修改读写分离脚本rw-splitting.lua

修改默认连接,进行快速测试,不修改的话要达到连接数为4时才启用读写分离

[iyunv@localhost mysql-proxy]# vi rw-splitting.lua

....

-- connection pool
if not proxy.global.config.rwsplit then
        proxy.global.config.rwsplit = {
                min_idle_connections = 1,    #修改为1
                max_idle_connections = 1,   #修改为1

                is_debug = true
        }
end

2.5 启动服务:

[iyunv@localhost ~]# mysql-proxy --admin-username=root --admin-password=123456 --admin-lua-script=/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua --proxy-read-only-backend-addresses=188.188.1.175:3306 --proxy-backend-addresses=188.188.1.144:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --log-level=info --log-file=/usr/local/mysql-proxy/logs/mysq-proxy.log &
[1] 30332

查看服务运行端口:

[iyunv@localhost ~]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:4040                0.0.0.0:*                   LISTEN      30332/mysql-proxy   
tcp        0      0 0.0.0.0:4041                0.0.0.0:*                   LISTEN      30332/mysql-proxy   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      2660/portmap        
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      3013/cupsd         
tcp        0      0 0.0.0.0:759                 0.0.0.0:*                   LISTEN      2697/rpc.statd      
tcp        0      0 :::22                       :::*                        LISTEN      2999/sshd   

查看服务:

[iyunv@localhost ~]# ps -ef | grep mysql-proxy
root     30332  3351  0 21:10 pts/0    00:00:00 /usr/local/mysql-proxy/libexec/mysql-proxy --admin-username=root --admin-password=123456 --admin-lua-script=/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua --proxy-read-only-backend-addresses=188.188.1.175:3306 --proxy-backend-addresses=188.188.1.144:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --log-level=info --log-file=/usr/local/mysql-proxy/logs/mysq-proxy.log
root     30345  3351  0 21:12 pts/0    00:00:00 grep mysql-proxy

3.测试:

为了测试读写分离,先停掉从服务

[iyunv@localhost logs]# mysql -uroot -p123456 -h188.188.1.138 -P4040

mysql> use ckl

查看表:

mysql> select * from qinglv;
[read_query] 188.188.1.138:56958
  current backend   = 0
  client default db = ckl
  client username   = root
  query             = select * from qinglv
  sending to backend : 188.188.1.175:3306
    is_slave         : true
    server default db: ckl
    server username  : root
    in_trans        : false
    in_calc_found   : false
    COM_QUERY       : true
+-----------+------+
| name      | age  |
+-----------+------+
| ckl       |   26 |
| xiong     |   24 |
| ckl       |   26 |
| xiong     |   24 |
| kangle    |    0 |
| kangkang  |   26 |
| xiaoxiong |   24 |
| haha      |   33 |
| ceshi     |   34 |
| wukaka    |   30 |
| heixiu    |   28 |
| zengjia   |   22 |
| mama      |   23 |
| meko      |   32 |
| kkk       |   89 |
| jkl       |   20 |
| jia       |   23 |
+-----------+------+
17 rows in set (0.00 sec)

插入数据:

mysql> insert into qinglv values('wuba',25);
[read_query] 188.188.1.138:56958
  current backend   = 0
  client default db = ckl
  client username   = root
  query             = insert into qinglv values('wuba',25)
  sending to backend : 188.188.1.144:3306
    is_slave         : false
    server default db: ckl
    server username  : root
    in_trans        : false
    in_calc_found   : false
    COM_QUERY       : true
Query OK, 1 row affected (0.01 sec)

查看表:

mysql> select * from qinglv;
[read_query] 188.188.1.138:56958
  current backend   = 0
  client default db = ckl
  client username   = root
  query             = select * from qinglv
    server default db:
    client default db: ckl
    syncronizing
  sending to backend : 188.188.1.175:3306
    is_slave         : true
    server default db:
    server username  : root
    in_trans        : false
    in_calc_found   : false
    COM_QUERY       : true
+-----------+------+
| name      | age  |
+-----------+------+
| ckl       |   26 |
| xiong     |   24 |
| ckl       |   26 |
| xiong     |   24 |
| kangle    |    0 |
| kangkang  |   26 |
| xiaoxiong |   24 |
| haha      |   33 |
| ceshi     |   34 |
| wukaka    |   30 |
| heixiu    |   28 |
| zengjia   |   22 |
| mama      |   23 |
| meko      |   32 |
| kkk       |   89 |
| jkl       |   20 |
| jia       |   23 |
+-----------+------+
17 rows in set (0.00 sec)

没有数据

启动主从同步,再查看:

mysql> select * from qinglv;
[read_query] 188.188.1.138:56958
  current backend   = 0
  client default db = ckl
  client username   = root
  query             = select * from qinglv
  sending to backend : 188.188.1.175:3306
    is_slave         : true
    server default db: ckl
    server username  : root
    in_trans        : false
    in_calc_found   : false
    COM_QUERY       : true
+-----------+------+
| name      | age  |
+-----------+------+
| ckl       |   26 |
| xiong     |   24 |
| ckl       |   26 |
| xiong     |   24 |
| kangle    |    0 |
| kangkang  |   26 |
| xiaoxiong |   24 |
| haha      |   33 |
| ceshi     |   34 |
| wukaka    |   30 |
| heixiu    |   28 |
| zengjia   |   22 |
| mama      |   23 |
| meko      |   32 |
| kkk       |   89 |
| jkl       |   20 |
| jia       |   23 |
| bba       |   12 |
| wuba      |   25 |
+-----------+------+
19 rows in set (0.00 sec)

查看日志:

[iyunv@localhost logs]# cat /usr/local/mysql-proxy/logs/mysq-proxy.log
2012-03-29 21:10:48: (message) mysql-proxy 0.8.1 started
2012-03-29 21:10:48: (message) proxy listening on port :4040
2012-03-29 21:10:48: (message) added read/write backend: 188.188.1.144:3306
2012-03-29 21:10:48: (message) added read-only backend: 188.188.1.175:3306
2012-03-29 21:14:45: (message) mysql-proxy 0.8.1 started
2012-03-29 21:14:45: (message) proxy listening on port :4040
2012-03-29 21:14:45: (message) added read/write backend: 188.188.1.144:3306
2012-03-29 21:14:45: (message) added read-only backend: 188.188.1.175:3306

至此,读写分离完成。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-94986-1-1.html 上篇帖子: Linux下Mysql 的编译安装最新版本5.6.24和详细部署 下篇帖子: mysql Amoeba 配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表