MYSQL读写分离

总结如下
1.主 写 172.19.1.37
2.从 读 172.19.1.38
3.mysqlproxy 172.19.1.36
4.client 172.19.1.35
一 、主写与从读做好数据同步
1.比如同步db->aaa
2.比如table->new  (id int,name varchar(20));
二、配置 mysqlproxy实现读写分离
配置lua
1.tar xvf lua-5.1.4.tar.gz -C /usr/src/
2.cd /usr/src/lua-5.1.4/
3.make linux
4.make install
5. export LUA_LIBS='-L/usr/local/lib/lua/5.1/ -llua -lm'
6.export LUA_CFLAGS=" "
配置mysqlproxy
1.tar xvf mysql-proxy-0.8.1-linux-rhel5-x86-32bit.tar.gz -C /usr/local/
2.cd /usr/local/
3.mv mysql-proxy-0.8.1-linux-rhel5-x86-32bit/ mysql-proxy/
4.cd /usr/local/mysql-proxy/
5../bin/mysql-proxy --help-all
6.ulimit -SHn 65535
7../bin/mysql-proxy --admin-username=mysqlproxy --admin-password=123 --admin-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/admin-sql.lua --daemon --user=daemon --pid-file=/var/run/mysql-proxy.pid --log-level=info --log-file=/var/log/mysql-proxy.log --proxy-backend-addresses=172.19.1.37:3306 --proxy-read-only-backend-addresses=172.19.1.38:3306 --proxy-fix-bug-25371 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --keepalive --max-open-files=65535 --event-threads=2 &
8.netstat -ntlup |grep 40 ---可看到已启动 4040端口 4041端口
测试
1.在两台mysql上给权限
grant all on *.* to mailto:%27bob%27@%27172.19.1.36%27 identified by '123'
flush privileges;
2.编写规则
vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
-- connection pool
if not proxy.global.config.rwsplit then
        proxy.global.config.rwsplit = {
                min_idle_connections = 4, --连接四个以上就会分离读操作
                max_idle_connections = 8,
                is_debug = false
        }
end
3.客户端连接mysql -h 172.19.1.36 -u bob -p123 -P 4040     --连接四个以上就会实现在不同的机器上读

扩展
1.主 写 172.19.1.37
2.从 读 172.19.1.38  172.19.1.39  172.19.1.40 ......(一主多从)
3.mysqlproxy 172.19.1.36
proxy-read-only-backend-addresses  参数是可以写多次的,也就是在一主多从的架构情况下可以写多个只读服务器地址,他会自动在多个只读mysql服务里进行一个简单的轮循,也就是简单的读负载均衡
posted @ 2012-10-28 17:34  bobsoft  阅读(318)  评论(0编辑  收藏  举报