mysql proxy的常见问题

最近试用mysql proxy,遇到若干问题,好在一一找到了解决方案,列出来备忘。这次使用的版本是0.6.x,也许新版本就没有这些问题了。

无法通过mysql proxy连接mysql

在host,password正确的情况下,也会遇到无法连接mysql的情况,可以查查mysql server是不是使用了old_password,检查my.cnf里面是不是有

old_password = 1

有的数据库是从老版本升级上来的,所以会开启这个选项,mysql proxy不支持old_password。另外也可以通过查看密码长度的方式来判断:

select length(password) from mysql.user 

如果长度为16位则是old_password无疑。

字符乱码

通过proxy连上数据库之后,查到的字符串始终是乱码,即便手工执行了set names ‘utf8’也没有效果。

解决办法,mysql server必须设置


[mysqld]
skip-character-set-client-handshake
init-connect='SET NAMES utf8'
default-character-set=utf8

一台mysql slave当掉之后,mysql proxy会报错导致全部的mysql无法连接

安装了mysql proxy实现读写分离,有master x 1, slave x 2。为了测试failover,停掉了一个slave,然后mysql proxy会一直报错,提示无法连接。这个情况比单点的mysql还糟糕,挂掉一个就全挂掉!mysql的工程师给提供了一段代码,替换掉src/network-mysqld-proxy.cNETWORK_MYSQLD_PLUGIN_PROTO函数可以解决这个问题。

代码比较长,直接附上下载地址: network-mysqld-proxy-function.c

定期crash

这个问题也很糟糕,mysql proxy经常会自己悄悄的停止工作,所幸时间间隔很长。猜想是有内存泄漏的问题存在,希望以后的版本能解决。

我采用的解决办法就是晚上定期重启它。

作者: 发表于September 20, 2008 at 5:34 pm

版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原始出处作者信息及此声明

Tags:

5 条评论

  1. fivebull 于 2008-09-22 @ 12:54:45 留言

    似乎暂时难用于生产环境?

  2. Volcano 于 2008-09-22 @ 13:37:45 留言

    可以关注,但是生产环境慎用

  3. xtuna 于 2008-10-29 @ 11:41:36 留言

    还真的不能乱用,谢谢

  4. wl 于 2009-01-09 @ 11:07:23 留言

    09-01-08:
    从(http://svn.mysql.com/svnpublic/mysql-proxy/trunk)svn co下来的代码,已经没有这个文件这个函数了:
    [root@rotex mysql-proxy]# cat src/*.c|grep “NETWORK_MYSQLD_PLUGIN_PROTO”
    [root@rotex mysql-proxy]# ls src/*.c|grep proxy
    安装好以后,停止任意一台mysqld服务器也不影响应用。

  5. Volcano 于 2009-01-11 @ 07:15:49 留言

    mysql proxy有老长一段时间没有release版本,也是时候发生一些变化了

RSS 为此帖反馈评论