Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1358937
  • 博文数量: 277
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 3918
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 22:46
文章分类

全部博文(277)

文章存档

2017年(3)

2016年(9)

2015年(65)

2014年(27)

2013年(85)

2012年(61)

2011年(27)

分类: Mysql/postgreSQL

2013-01-02 23:48:44

   MySQL作为服务器的后端,当单台不能满足要求时,需要多台MySQL。多台MySQL该如何组网,才能满足需要,同时也能便于扩容,具备一定的扩展性。目前比较熟知的方案就是mysql-proxy和cluster。
   mysql-cluster目前尚不稳定,而且也很耗内存,硬件成本和研发及维护成本都比较高。
   mysql-proxy则是一种比较廉价的方案。由他实现读写分离,当然还有其他的特性,如故障切换,负载均衡 等。
   下面描述在Centos 5.8下安装和测试mysql-proxy,软件的版本信息如下:
    mysql-proxy: 0.8.2
    lua:        5.1.4
    libevent:    1.4.13
    glib:       2.24.2
    安装过程中遇到很多的问题,一开始选择mysql-proxy 0.8.3,按照mysql官方文档安装,
    但是编译过程中还是出现很多错误,因此直接放弃了。
    选择mysql-proxy 0.8.2 ,也出现不少问题,那是因为lua的版本有问题。
    尝试过lua 5.1.0,5.1.2, 都存在问题。

    最后5.1.4版本,不论是lua_load的接口参数,还是一些API都有定义了。
    编译过程中还出现了链接错误,主要是因为lua给出的库是静态库;

    重新组装成动态库,动态库组装方式还必须是gcc -shared -o liblua.so *.o(需要先将编译的静态库解出来 ar -x liblua.a),因为gcc版本是4.1.2的,不能用ld -shared;

    还需要修改mysql-proxy的makefile,主要是MYSQL_LIBS中没有包含-llua -ldl(当然也可以修改configure文件中的MYSQL_LIBS来做,从而不需要改Makefile)。

    LUA_LIBS中没有没有包含-llua -ldl可以通过export LUA_LIBS="-L/usr/local/lib -ldl -llua"完成

    在configure之前,最好export LUA_CFLAGS=-I/usr/local/include 和 export LUA_LIBS。

    如此,才能顺利编译通过。
   
    最后运行mysql-proxy -V 时,出现动态库找不到路径以及selinux的问题;通过设置环境变量LD_LIBRARY_PATH和关闭selinux,最终mysql-proxy能正常启动。
   
       
  

阅读(2175) | 评论(0) | 转发(0) |
0

上一篇:java中的对象的比较

下一篇:mysql主从配置

给主人留下些什么吧!~~