使用mysql-proxy软件实现mysql读写分离

实验环境:
3台readhat 5.4机器。
其中一台做代理服务,其他俩台跑数据库。
代理机器: proxy                  192.168.0.17
可写数据库: MASTER      192.168.0.193
可读数据库: BACKUP     192.168.0.59
 
安装代理软件
1、准备所需要的软件包,主要有3个,其中mysql-proxy软件为lua语言编写,所以安装lua工具。
[root@proxy ~]# ls
lua-5.0.2-1.el5.rf.i386.rpm        mysql-proxy-0.8.0-linux-rhel5-x86-32bit.tar.gz
lua-devel-5.0.2-1.el5.rf.i386.rpm
[root@proxy ~]# rpm -ivh lua-5.0.2-1.el5.rf.i386.rpm 
warning: lua-5.0.2-1.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Preparing...                ########################################### [100%]
   1:lua                    ########################################### [100%]
[root@proxy ~]# rpm -ivh lua-devel-5.0.2-1.el5.rf.i386.rpm 
warning: lua-devel-5.0.2-1.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Preparing...                ########################################### [100%]
   1:lua-devel              ########################################### [100%]
将mysql-proxy软件包减压到/usr/local/目录并改名为 proxy
[root@proxy ~]# tar xzf mysql-proxy-0.8.0-linux-rhel5-x86-32bit.tar.gz -C /usr/local/
[root@proxy ~]# cd /usr/local
[root@proxy ~]# mv mysql-proxy-0.8.0-linux-rhel5-x86-32bit/ proxy
这个代理软件减压就可以直接用了。
2、开启其他俩台机器的mysqld服务。
[root@MASTER ~]# service mysqld start 
启动 MySQL: [确定]
[root@MASTER ~]#
 
[root@BACKUP ~]# service mysqld start
启动 MySQL: [确定]
[root@BACKUP ~]#
 
3、完成后,在MASTER和BACKUP在准备一张表,分别授权一个用户,查看实验效果。
[root@BACKUP ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.77 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use test ;       
Database changed
mysql> create table  test(id int);
Query OK, 0 rows affected (0.04 sec)
mysql> grant all  on *.* to  zhaoyun@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges ;
Query OK, 0 rows affected (0.00 sec)

[root@MASTER ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.77 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use test
Database changed
mysql> create table test(id int);
Query OK, 0 rows affected (0.02 sec)
mysql> grant all  on *.* to  zhaoyun@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges ;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test values(1);
Query OK, 1 row affected (0.00 sec)
现在back数据库插入一条数据,来查看实验效果。
4、准备工作完成,下面配置代理服务。
[root@proxy  mysql-proxy]# pwd
/usr/local/proxy/share/doc/mysql-proxy
[root@proxy  mysql-proxy]# vi rw-splitting.lua
               min_idle_connections = 4,    为了验证试验效果将他改成1 .就是当有一个链接的时候,就实现读写分离的功能。
         #       max_idle_connections = 8,
 
[root@proxy bin]# ./mysql-proxy -P 192.168.0.17:3306 -r 192.168.0.59:3306 -b 192.168.0.193:3306 -s /usr/local/proxy/share/doc/mysql-proxy/rw-splitting.lua 
2011-12-09 21:28:39: (critical) chassis-limits.c:81: could not raise RLIMIT_NOFILE to 8192, Invalid argument (22). Current limit still 1024.
-P 指定本机地址端口即代理server
-r 可读的数据库服务器及端口
-b 可写的数据库服务器及端口
-s 执行配置文件
在第一次执行时会出现文件限制的信息。需要修改一下系统参数
使用ulimit命令配置。
[root@proxy bin]# ulimit -n 10240
完成后再次启动,现在启动没有信息了,将其放在后台运行。后面加&就可以了。
[root@proxy bin]# ./mysql-proxy -P 192.168.0.17:3306 -r 192.168.0.59:3306 -b 192.168.0.193:3306 -s /usr/local/proxy/share/doc/mysql-proxy/rw-splitting.lua 
 &
代理启动后会启动一个端口就是-P指定的
[root@localhost ~]# netstat -antlp |grep 3306
tcp        0      0 192.168.0.17:3306           0.0.0.0:*                   LISTEN      23560/mysql-proxy   
[root@localhost ~]#
5、在客户端进行测试。
[root@client ~]# mysql -h 192.168.0.59  -uzhaoyun -p123456
连接后分别对数据表进行读写操作,查看是否能看到读和写不在同一个机器。。
在客户端对数据进行操作时,代理服务会显示信息
    server default db: test
    client default db: 
    syncronizing
    server default db: test
    client default db: 
    syncronizing
    server default db: test
    client default db: zhaoyun
    syncronizing
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值