一、软件包
a) mysql-proxy-0.7.2-linux-rhel5-x86-32bit.tar.gz
b) lua-5.1.4.tar.gz
二、系统环境
a) 主数据库 59.64.28.78
b) 从数据库 59.64.28.79
c) MYSQL代理 59.64.30.99
三、安装步骤
a) 配置好MYSQL的主从同步。
b) 在MYSQL代理服务器上执行
c) Cd /var/local/software
d) tar zxvf lua-5.1.4.tar.gz
e) cd lua-5.1.4
f) make linux; make install;
g) export LUA_CFLAGS="-I/usr/local/include" LUA_LIBS="-L/usr/local/lib -llua -ldl" LDFLAGS="-lm"
h) cd ../
i) tar zxvf mysql-proxy-0.7.2-linux-rhel5-x86-32bit.tar.gz
j) mv mysql-proxy-0.7.2-linux-rhel5-x86-32bit /usr/local/mysql-proxy
k) export PATH=$PATH:/usr/local/mysql/mysql-proxy/sbin/
l) mysql-proxy –help-all正确显示mysql-proxy命令的帮助信息表示安装成功
四、读写分离测试
a) 在主数据库上/usr/local/mysql/bin/mysql –uroot –p123456
b) Mysql>use shlevod_base;
c) Mysql>CREATE TABLE `sys_t` (
`id` varchar(36) NOT NULL,
`name` varchar(20) DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Mysql>insert into sys_t(id,name) value(1,’78’);
d) 在从数据库上/usr/local/mysql/bin/mysql –uroot –p123456
e) Mysql>use shlevod_base;
f) Mysql>insert into sys_t(id,name) value(2,’79’);
g) 启动MYSQL代理
mysql-proxy --proxy-read-only-backend-addresses=59.64.28.79:3306 --proxy-backend-addresses=59.64.28.78:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua &
说明59.64.28.78主数据库为读写数据库
59.64.28.79从数据库为只读 数据库
g) 在另一台客户端MYSQL数据库上连接MYSQL代理数据库(不能是主从和代理服务器不能很难看书分离测试情况)
/usr/local/mysql/bin/mysql -uroot -p123456 -P4040 -h59.64.30.99
Mysql>use shlevod_base;
Mysql>insert into sys_t(id,name) value(3,’99’);
h) 在主数据库上查询
i) Mysql>select * from sys_t;可以看到99这条数据在主数据库上存在,但79那条数据是不存在的。但从代理服务器上查询可以查询到所有的数据。
j) 在从数据库上查询
k) Mysql>select * from sys_t;可以看到99这条数据也存在。是因为数据是主从同步过来的。
l) 以上逻辑说明数据可以实现读写分离。数据库可以统一的经过代理来连接。分配读写数据库的服务器。
五、注意事项
a) 主从和代理服务器上需要一相同的MYSQL帐号和密码来实现读写分离。
b) MYSQL的PROXY的端口是4040
六、参考资料
http://blog.chinaunix.net/u/29134/showart_482210.html