服务器三台

数据库Master主服务器:192.168.1.103  安装Mysql数据库

数据库Slave从服务器:192.168.1.104    安装Mysql数据库

MySQL-Proxy调度服务器:192.168.1.102  安装mysql-proxy,mysql

前两台配置主从复制


MySQL-Proxy调度服务器:

  1.安装mysql

  2.检查系统所需软件包

通过 rpm -qa | grep name 的方式验证以下软件包是否已全部安装。

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

libevent* glib* 若缺少相关的软件包,可通过yum -y install方式在线安装

或者直接执行以下命令

</pre><pre name="code" class="html" style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px;">yum -y install gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig* libevent* glib* readline*

3:编译安装lua

    MySQL-Proxy的读写分离主要是通过rw-splitting.lua脚本实现的,因此需要安装lua

   检查是否安装过lua:

  rpm -qa | grep lua 

若没有则安装

  建议采用源码包进行安装

   cd /opt/install

  wget http://www.lua.org/ftp/lua-5.1.4.tar.gz

  tar zvfx lua-5.2.3.tar.gz

  cd lua-5.1.4

  vi src/Makefile

64位系统需要

 在 CFLAGS= -O2 -Wall $(MYCFLAGS) 这一行记录里加上-fPIC,更改为 CFLAGS= -O2 -Wall -fPIC $(MYCFLAGS) 来避免编译过程中出现错误。


 make linux

 make install

4.安装Mysql-proxy

  

推荐采用已经编译好的二进制版本,因为采用源码包进行编译时,最新版的MySQL-Proxy对automake,glib以及libevent的版本都有很高的要求,而这些软件包都是系统的

基础套件,32位RHEL6平台:


查看linux内核
[root@loc ~]# uname -a

Linux oo 2.6.32-431.el6.i686 #1 SMP Fri Nov 22 00:26:36 UTC 2013 i686 i686 i386 GNU/Linux
下载对应的版本
http://downloads.mysql.com/archives/proxy/
1:测试平台为RHEL6 32位,因此选择32位的软件包
2:tar -zxvf mysql-proxy-0.8.5-linux-el6-x86-32bit.tar.gz
3:mv mysql-proxy-0.8.3-linux-rhel5-x86-64bit /opt/mysql-proxy
4: [root@oo mysql-proxy]# find share/ -name rw-*
share/doc/mysql-proxy/rw-splitting.lua
把share/doc/mysql-proxy/rw-splitting.lua拷贝到 scripts下
[root@lzm mysql-proxy]# mkdir  scripts;
[root@lzm mysql-proxy]# cp share/doc/mysql-proxy/rw-splitting.lua scripts/
[root@lzm scripts]# vim scripts/rw-splitting.lua
查找最小最大连接数改成1  min_idle_connections = 1,   max_idle_connections = 1,


mysql 读写分离_mysql               mysql 读写分离_服务器_02

cd ..
cd bin
./mysql-proxy --help -all 查看帮助文档
配置读写分离主机和指定路径的 /opt/mysql-proxy/scripts/rw-splitting.lua 的脚本并启动
[root@oo bin]# ./mysql-proxy   --proxy-backend-addresses=192.168.1.103  --proxy-read-only-backend-addresses=192.168.1.104 --proxy-lua-script=/opt/mysql-proxy/scripts/rw-splitting.
2016-03-20 20:34:20: (critical) plugin proxy 0.8.5 started



最后测试

连接的端口不再是3306而是4040

mysql -h192.168.1.102 -uroot -proot -P4040

mysql> insert into user values(1,'jack'); //代理服务器插入数据

Query OK, 1 row affected (0.12 sec)


mysql> select * from user;

+------+------+

| id   | name |

+------+------+

|    1 | jack |

+------+------+

1 row in set (0.00 sec)

主服务器 192.168.1.103

mysql> select * from user;

+------+------+

| id   | name |

+------+------+

|    1 | jack |

+------+------+

1 row in set (0.00 sec)


从服务器192.168.1.104

mysql> select * from user;

+------+------+

| id   | name |

+------+------+

|    1 | jack |

+------+------+

1 row in set (0.00 sec)


为了测试

在从库中192.168.1.104下执行以下命令关闭从库

mysql> stop slave;

Query OK, 0 rows affected (0.12 sec)



代理服务器

mysql> insert into user values(2,'json');

Query OK, 1 row affected (0.02 sec)


主库192.168.1.103

mysql> select * from user;

+------+------+

| id   | name |

+------+------+

|    1 | jack |

|    2 | json 

+------+------+

2 rows in set (0.00 sec)


从库192.168.1.104

mysql> select * from user;

+------+------+

| id   | name |

+------+------+

|    1 | jack |

+------+------+

1 row in set (0.00 sec)