分类: 系统运维
2011-08-31 14:28:37
MySQL Proxy是一个通过网络协议,提供MySQL服务器与客户端之间连接的应用工具,所有MySQL兼容的客户端(包括mysql命令行,调用mysql命令行的类库,以及支持MySQL网络协议的应用)均无需任何修改即可直接连接Mysql Proxy。
本文记录ENTERPRISE LINUX5u3版本下编译安装MySQL Proxy 0.8的步骤。
1、依赖包源码编译方式安装MySQL Proxy前,下列依赖包必须首先安装:
RHEL5.3版本自带的libevent版本较低,为1.1版,不符合需求,直接下载更高版本安装,操作步骤如下:
# wget
# tar xvfz libevent-1.4.14b-stable.tar.gz
# cd libevent-1.4.14b-stable
# ./configure --prefix=/usr/local/libevent-1.4
# make && make installLua是一个极轻量级的脚本语言,MySQL Proxy通过该语言进行功能扩充。
首先到其官网下载最新版本5.1.4,而后解压安装,依次执行命令如下:
# wget
# tar xvfz lua-5.1.4.tar.gz
# cd lua-5.1.4
# vi Makefile修改MakeFile文件,将:
修改为:
这样做的目的,是为了将lua相关的文件放在同一目录内,便于查找和应用。
Lua的编译和安装详见目录内的INSTALL文件,三思这里是在下安装,直接执行下列命令即能完成编译和安装:
官方文档说是需要2.6.0或更高版本,实际在安装mysql-proxy 0.8时,提示glib2的版本不能低于2.16.0,这里为了后面安装进程顺利执行,首先升级系统的glib2,步骤如下。
# wget
# tar xvfz glib-2.22.5.tar.gz
# cd glib-2.22.5
# ./configure --prefix=/usr/local/glib-2.2
# make && make install主要需要用到mysql_config等应用,mysql的开发包可以直接到其官网下载:http://dev.mysql.com/downloads/mysql/5.1.html
Rpm包的安装比较简单,执行命令如下:
接下来,终于轮到正主上场,三思这里安装的是MySQL Proxy 0.8.1版本,也可以直接到其官网下载:http://dev.mysql.com/downloads/mysql-proxy/
# tar xvfz mysql-proxy-0.8.1.tar.gz
# cd mysql-proxy-0.8.1
# ./configure LDFLAGS="-lm -ldl" LUA_CFLAGS="/usr/local/lua/bin/lua -I/usr/local/lua/include" LUA_LIBS="/usr/local/lua/lib -llua" --prefix=/usr/local/mysql-proxy --with-lua
# make
# make install安装成功后,执行mysql-proxy命令验证:
[root@rhel5u3 mysql-proxy]# /usr/local/mysql-proxy/bin/mysql-proxy -V
mysql-proxy 0.8.1
chassis: mysql-proxy 0.8.1
glib2: 2.22.5
libevent: 1.4.14b-stable
LUA: Lua 5.1.4
package.path: /usr/local/mysql-proxy/lib/mysql-proxy/lua/?.lua
package.cpath: /usr/local/mysql-proxy/lib/mysql-proxy/lua/?.so
-- modules
admin: 0.8.1
proxy: 0.8.1编译过程看起来简单,仅只是几条命令,但就是这个安装颇不顺利,折腾了三思整整一天时间,也许是我运气不好,当然更多应该还是水平有限,实际执行编译的过程中遇到了很多错误,错误信息及解决方案见下,希望对同样遇到该问题的同学有所帮助:
操作系统版本如下:[root@rhel5u3 ~]# cat /etc/issue
Enterprise Linux Enterprise Linux Server release 5.3 (Carthage)
Kernel \r on an \mchecking for LUA... no
... checked for Lua via pkg-config: No package 'lua' found. retrying with lua5.1看错误信息是说找不到lua包。
解决方案:A>. 参数1.2步骤中所示,编译安装lua;
B>. 设置环境变量:
export LUA_CFLAGS="-I/usr/local/lua/include"
export LUA_LIBS="-L/usr/local/lua/lib -llua -ldl"注意变量中的路径应为lua实际安装路径,而后重新执行configure配置编译程序。
如果执行上述操作故障依旧,可以尝试将lua安装路径下的etc/lua.pc文件复制到glib2安装路径中的lib/pkgconfig/文件夹内。
错误2:checking for GLIB... configure: error: Package requirements (glib-2.0 >= 2.16.0) were not met:
Requested 'glib-2.0 >= 2.16.0' but version of GLib is 2.12.3说明默认识别到的glib2版本不正确。
解决方案:
A>. 参照1.3步骤所示,编译安装适当版的glib;
B>. 设置环境变量:
export GLIB_CFLAGS="-I/usr/local/glib-2.2/include/glib-2.0"
export GLIB_LIBS="-L/usr/local/glib-2.2/lib/glib-2.0"
export GMODULE_CFLAGS="-I/usr/local/glib-2.2/include"
export GMODULE_LIBS="-L/usr/local/glib-2.2/lib"
export GTHREAD_CFLAGS="-I/usr/local/glib-2.2/include"
export GTHREAD_LIBS="-L/usr/local/glib-2.2/lib"特别强调,GMODULE和GTHREAD的相关变量必须设置,否则会遇到(gmodule-2.0 >= 2.16.0) were not met或(gthread-2.0 >= 2.16.0) were not met之类错误。
变量值中的路径应为glib2的实际安装路径,而后重新执行configure配置编译程序。
错误3:checking for event_init in -levent... no
configure: error: libevent is required没有找到libevent依赖包。
解决方案:
A>. 参照1.1步骤中所示,编译安装libevent。
B>. 设置环境变量:
而后重新执行configure配置编译程序
错误4:看起来是lua调用出错,相关文档提示是提示:64bit环境可能遇到该现象。
解决方案:
A>. 编辑lua的src/MakeFile文件,修改下列参数:
修改为:
B>. 按照1.2步骤中所示,编译安装lua。如果之前已经编译过,记得要执行make clean清除已编译配置。
错误5:解决方案:
而后重新执行编译。