使用mysql-proxy实现mysql的读写分离+mysql的日志查询

读写分离的含义:

 MySQL读写分离是指让master处理写操作,让slave处理读操作,非常适用于
 读操作量比较大的场景,可减轻master的压力。
 使用mysql-proxy实现mysql的读写分离,mysql-proxy实际上是作为后
 端mysql主从服务器的代理,它直接接受客户端的请求,对SQL语句进行分析,
 判断出是读操作还是写操作,然后分发至对应的mysql服务器上。

实验环境:

server1:172.25.38.1 master
server2:172.25.38.2 slave
server3:172.25.38.3 mysql-proxy

实验准备:
可以参考我写的主从复制:https://blog.csdn.net/aaaaaab_/article/details/81515111

第一:在172.25.38.1172.25.38.2两台mysql搭建主从复制架构。
第二、在proxy机器上安装配置mysql-proxy,实现master/slave架构读写分离。

第一步只演示主从复制效果,详细配置点击上方网址:
在从端可以看到与主端master已经连接:

mysql> show slave status\G   已经达成主从复制
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 172.25.254.1
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 154
               Relay_Log_File: server2-relay-bin.000002
                Relay_Log_Pos: 367
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

这里写图片描述
在主端插入字段信息测试主从复制:

mysql> use love;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------+
| Tables_in_love |
+----------------+
| ours           |
+----------------+
1 row in set (0.00 sec)

mysql> insert into ours values('xxx','789');  插入字段信息
Query OK, 1 row affected (0.28 sec)

这里写图片描述
从端可以同步查看:

mysql> use love;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from ours;  可以查看表格信息
+----------+----------+
| username | password |
+----------+----------+
| xfl      | 123      |
| xyy      | 456      |
| xxx      | 789      |
+----------+----------+
3 rows in set (0.00 sec)

这里写图片描述
在代理端(proxy)配置读写分离:

[root@server3 ~]# ls
mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
[root@server3 ~]# tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz   解压
[root@server3 ~]# ls
mysql-proxy-0.8.5-linux-el6-x86-64bit
mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
[root@server3 ~]# cd mysql-proxy-0.8.5-linux-el6-x86-64bit  进入解压路径
[root@server3 mysql-proxy-0.8.5-linux-el6-x86-64bit]# ls
bin  include  lib  libexec  licenses  share
[root@server3 mysql-proxy-0.8.5-linux-el6-x86-64bit]# cd ..
[root@server3 ~]# mv mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy
[root@server3 ~]# cd /usr/local/mysql-proxy/
[root@server3 mysql-proxy]# ls
bin  include  lib  libexec  licenses  share
[root@server3 mysql-proxy]# mkdir conf
[root@server3 mysql-proxy]# ls
bin  conf  include  lib  libexec  licenses  share
[root@server3 mysql-proxy]# cd conf/
[root@server3 conf]# ls
[root@server3 conf]# cd ..
[root@server3 mysql-proxy]# ls
bin  conf  include  lib  libexec  licenses  share

这里写图片描述

[root@server3 mysql-proxy]# cd conf/
[root@server3 conf]# ls
[root@server3 conf]# cd ..
[root@server3 mysql-proxy]# ls
bin  conf  include  lib  libexec  licenses  share
[root@server3 mysql-proxy]# cd bin/
[root@server3 bin]# ls
mysql-binlog-dump  mysql-myisam-dump  mysql-proxy
[root@server3 bin]# pwd
/usr/local/mysql-proxy/bin
[root@server3 bin]# vim ~/.bash_profile  编写环境变量
[root@server3 bin]# source ~/.bash_profile   刷新生效

这里写图片描述

[root@server3 bin]# ls
mysql-binlog-dump  mysql-myisam-dump  mysql-proxy
[root@server3 bin]# cd ..
[root@server3 mysql-proxy]# cd conf/
[root@server3 conf]# pwd
/usr/local/mysql-proxy/conf
[root@server3 conf]# ls
mysql-proxy.conf
[root@server3 conf]# cd ..
[root@server3 mysql-proxy]# ls
bin  conf  include  lib  libexec  licenses  share
[root@server3 mysql-proxy]# cd share/
[root@server3 share]# ls
doc
[root@server3 share]# cd doc/
[root@server3 doc]# ls
mysql-proxy
[root@server3 doc]# cd mysql-proxy/

lua语言:

Lua是一个小巧的脚本语言。是巴西里约热内卢天主教大学里的一个研究小组,
由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo
所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,
这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,
提供在特定平台上的即时编译功能。
Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。
不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。Lua由标准C编
写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。一个完整的Lua解释器不过200k,在目前所
有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。
[root@server3 mysql-proxy]# ls   lua脚本的默认位置
active-queries.lua       ro-balance.lua           tutorial-resultset.lua
active-transactions.lua  ro-pooling.lua           tutorial-rewrite.lua
admin-sql.lua            rw-splitting.lua         tutorial-routing.lua
analyze-query.lua        tutorial-basic.lua       tutorial-scramble.lua
auditing.lua             tutorial-constants.lua   tutorial-states.lua
commit-obfuscator.lua    tutorial-inject.lua      tutorial-tokenize.lua
commit-obfuscator.msc    tutorial-keepalive.lua   tutorial-union.lua
COPYING                  tutorial-monitor.lua     tutorial-warnings.lua
histogram.lua            tutorial-packets.lua     xtab.lua
load-multi.lua           tutorial-prep-stmts.lua
README                   tutorial-query-time.lua

这里写图片描述

[root@server3 mysql-proxy]# vim rw-splitting.lua
min_idle_connections = 1,  ##最小连接数
max_idle_connections = 2,  ##最大连接数后实现读写分离 
[root@server3 mysql-proxy]# pwd
/usr/local/mysql-proxy/share/doc/mysql-proxy
[root@server3 mysql-proxy]# ll /usr/local/mysql-proxy/share/doc/mysql-proxy
total 288
-rw-r--r-- 1 7161 wheel  3780 Aug 19  2014 active-queries.lua
-rw-r--r-- 1 7161 wheel  2468 Aug 19  2014 active-transactions.lua
-rw-r--r-- 1 7161 wheel  8864 Aug 19  2014 admin-sql.lua
-rw-r--r-- 1 7161 wheel 10816 Aug 19  2014 analyze-
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值