Mysql proxy can't change DB to on slave的解决方案
前段时间和网友jabincn探讨关于mysql proxy部署了读写分离后,无法用ems等工具连接到slave d...
扫描右侧二维码阅读全文
18
2008/06

Mysql proxy can't change DB to on slave的解决方案

前段时间和网友jabincn探讨关于mysql proxy部署了读写分离后,无法用ems等工具连接到slave db的问题;
测试的结果:

mysql> show databases; ERROR 1105 (07000): can't change DB to on slave 192.168.0.9:3306 mysql> select count(*) from cjhjd.t_plan; ERROR 1105 (07000): can't change DB to on slave 192.168.0.9:3306 mysql> use cjhjd; Database changed mysql> select count(*) from cjhjd.t_plan; +----------+ | count(*) | +----------+ | 1440 | +----------+ 1 row in set (1.10 sec)

必须先键入指令,use dbname;后才能正常进行数据库操作;

发现问题:
发生的原因和rw-splitting.lua脚本中无法定义到slave DB库名称有关;
日志表现为:
server default db: cjhjd
client default db:
syncronizing
client default db未正确定义。

询问mysql官方得到解决方案,在rw-splitting.lua的脚本中增加代码如下:

-- if client and server db don't match, adjust the server-side -- -- skip it if we send a INIT_DB anyway if cmd.type ~= proxy.COM_INIT_DB and c.default_db and c.default_db ~= "" and c.default_db ~= s.default_db then print(" server default db: '" .. s.default_db .. "'") print(" client default db: '" .. c.default_db .. "'") print(" syncronizing") proxy.queries:prepend(2, string.char(proxy.COM_INIT_DB) .. c.default_db) end

修改完后,根据测试结果一切顺利。
感谢jabincn对以上问题的不断追踪和到最后圆满的解决,并提供该方案给我们,使我们共同学习和提高。

Last modification:November 26th, 2018 at 04:16 pm
If you think my article is useful to you, please feel free to appreciate

One comment

  1. jabincn

    嘿嘿,我简单的记录了一下。

    http://blog.chinaunix.net/u/9817/showart_1004822.html

Leave a Comment