准备工作:安装好mysql,安装mysql,请看这篇文章
[root@node1 src]# ls
keepalived-1.1.19.tar.gz           mysql-proxy-0.8.0-linux-rhel5-x86-32bit.tar.gz
[root@node1 src]# rpm -ivh lua-5.0.2-1.el5.rf.i386.rpm
[root@node1 src]# rpm -ivh lua-devel-5.0.2-1.el5.rf.i386.rpm
[root@node1 src]# tar -xf mysql-proxy-0.8.0-linux-rhel5-x86-32bit.tar.gz
可以直接使用
[root@node1 src]# mv mysql-proxy-0.8.0-linux-rhel5-x86-32bit /usr/local/mysql-proxy
[root@node1 src]# cd /usr/local/mysql-proxy/share/doc/mysql-proxy/
[root@node1 mysql-proxy]# vim rw-splitting.lua
 35 -- connection pool
 36 if not proxy.global.config.rwsplit then
 37         proxy.global.config.rwsplit = {
 38                 min_idle_connections = 1, 最小空闲线程连接
 39                 max_idle_connections = 8, 最大线程连接,基本没用
 40
 41                 is_debug = false
在读写的机器上授权用户和密码,这边在192.168.9.2(读写),192.168.9.3(读)上依次登陆
 [root@mysql2 bin]# mysql -uroot -p
Enter password:
mysql> grant all on *.* to proxy@'%' identified by 'root';
mysql> flush privileges;
mysql> exit
 [root@mysql3 bin]# mysql -uroot -p
Enter password:
mysql> grant all on *.* to proxy@'%' identified by 'root';
mysql> flush privileges;
mysql> exit
 [root@node1 bin]# cd /usr/local/mysql-proxy/bin

 查看帮助
 [root@node1 bin]# ./mysql-proxy --help-proxy
 mysql-proxy --proxy-read-only-backend-addresses=192.168.0.5:3306 --proxy-backend-addresses=192.168.0.3:3306 --proxy-lua-script=/usr/share/doc/mysql-proxy/rw-splitting.lua --daemon --user=nobody --log-level=debug --log-use-syslog
    -P    决定mysql用那个接口进行连接,指定mysql-proxy工作的时候允许访问的IP和接口    模拟成mysql,端口用3306,要保证自己本地的mysql不要运行,打开后端口冲突,mysql-proxy运行不起来
    -r    只读的后端服务器    192.168.1.140
    -b    读写的后端服务器    192.168.1.14
    -s    工作的时候指定脚本的位置和名称,默认是没有的
    版本小于5.1.12,会出现bug,要加上-bug
    --deamon    以一个服务的形式去启动
        什么算服务:被定义为服务的进程是没有终端的,不依赖于用户的终端。终端关掉,服务还是可以正常运行的

 [root@node1 bin]# ./mysql-proxy -P 192.168.9.1:3306 -b 192.168.9.2:3306 -r 192.168.9.3:3306 -s \
> /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --daemon &

验证读写分离:
在读写服务器192.168.9.2上操作
create database lzn;
use lzn;
create table t1(name char(50),level char(50));
insert into t1 values('node2','9.2');
在读服务器192.168.9.3上操作
create database lzn;
use lzn;
create table t1(name char(50),level char(50));
insert into t1 values('node3','9.3');

拿一台可以连接的机器当客户端,这边用的是192.168.9.251
mysql -uproxy -proot -h 192.168.9.1
mysql> use lzn;
mysql> select * from t1;
+-------+-------+
| name  | level |
+-------+-------+
| node3 | 9.3   |
+-------+-------+
1 row in set (0.00 sec)
看到内容会死node3,9.3说明是我们的读服务器,成功
验证写:执行插入数据,重新查,发现还是在读服务器上
mysql> insert into t1 values('linzhennan','cn');
Query OK, 1 row affected (0.00 sec)

mysql> select * from t1;
+-------+-------+
| name  | level |
+-------+-------+
| node3 | 9.3   |
+-------+-------+
1 row in set (0.00 sec)

到读写数据库192.168.9.2上,查询,到此,读写分离成功

mysql> select * from t1;
+------------+-------+
| name       | level |
+------------+-------+
| linzhennan | cn    |
| node2      | 9.2   |
+------------+-------+
2 rows in set (0.00 sec)

验证读写分离后可以做AB复制,主从复制