mysql-proxy安装配置

来源:互联网 发布:战列舰 知乎 编辑:程序博客网 时间:2024/06/08 01:28

mysql-proxy安装配置




MySQL-Proxy地址:192.168.10.103
MYSQL主库地址:192.168.10.104
MYSQL从库地址:192.168.10.105

安装过程:
1.先安装lua

Lua 是一个小巧的脚本语言。Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。
一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。
先安装可能的依赖包
[root@jia3 ~]# yum -y install gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig*  libevent* glib* readline-devel  
[root@jia3 ~]# mkdir /opt/install/  
[root@jia3 ~]# cd /opt/install/  
[root@jia3 install]# wget http://www.lua.org/ftp/lua-5.1.4.tar.gz  
[root@jia3 install]# tar zxvf lua-5.1.4.tar.gz  
[root@jia3 install]# cd lua-5.1.4  
[root@jia3 install]# make linux  
此时如果出现
lua.c:67:31: fatal error: readline/readline.h: No such file or directory
说明缺少libreadline-dev依赖包
安装并配置环境变量
[root@jia3 install]# make install  
[root@jia3 install]# export LUA_CFLAGS="-I/usr/local/include" LUA_LIBS="-L/usr/local/lib -llua -ldl" LDFLAGS="-lm" 

2.下载mysql-proxy的安装包 mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz 解压安装
[root@jia3 install]# tar zxvf  mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
[root@jia3 install]# mkdir /opt/mysql-proxy/    
[root@jia3 install]# cp /opt/install/mysql-proxy-0.8.5-linux-el6-x86-64bit/* /opt/mysql-proxy/  
[root@jia3 install]# cd /opt/mysql-proxy/  
[root@jia3 install]# export PATH=$PATH:/opt/mysql-proxy/bin/  

拷贝lua脚本/opt/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua到/opt/mysql-proxy/下,并修改脚本内容:
               min_idle_connections = 4,  
                max_idle_connections = 8,  
这里的4、8是指定链接数,在做试验时可以调整为1。

在主从配置OK的情况下,可以启动mysql-proxy。(可以通过./mysql-proxy --help-all查看支持的选项)
下面两种启动参数一样,只不过指定时一种使用简写
[root@jia3 bin]# ./mysql-proxy --proxy-address=192.168.10.103:3306 --proxy-read-only-backend-addresses=192.168.10.105:3306 --proxy-backend-addresses=192.168.10.104:3306 --proxy-lua-script=/opt/mysql-proxy/rw-splitting.lua --daemon --user=nobody --log-level=debug --log-use-syslog

[root@jia3 bin]# ./mysql-proxy -P 192.168.10.103:3306 -r 192.168.10.105:3306 -b 192.168.10.104:3306 -s /opt/mysql-proxy/rw-splitting.lua --daemon --user=nobody --log-level=debug --log-use-syslog
-P 决定mysql用那个接口进行连接,指定mysql-proxy工作的时候允许访问的IP和接口
-r 只读的后端服务器 192.168.10.105
-b 读写的后端服务器 192.168.10.104
-s 工作的时候指定脚本的位置和名称,默认是没有的
版本小于5.1.12,会出现bug,要加上-bug
--deamon 以一个服务的形式去启动
什么算服务:被定义为服务的进程是没有终端的,不依赖于用户的终端。终端关掉,服务还是可以正常运行的


在mysql主104(192.168.10.104)从(192.168.10.105)上都要创建用户。是远程连接,要授予远程连接的权限
mysql> grant all on *.* to proxy@'%' identified by 'proxy123';

3.然后使用proxy用户连接mysql-proxy来测试proxy-address=192.168.10.103:3306 读写分离。
经过测试,读写是分离的。
测试遇到的小问题:当有多个只读的库(即一主多从时),读只读某一个从库,而没有轮询。
猜想问题在lua脚本中,待学会lua脚本后再做深入。(也可能是我测试的方法有问题,直接命令行执行mysql -e)