设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 2604|回复: 0

[MySQL性能调优] Mysql proxy can’t change DB to on slave [复制链接]

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

签到
81
注册时间
2008-5-19
最后登录
2012-5-3
在线时间
1762 小时
阅读权限
200
积分
14979
帖子
2524
主题
1200
精华
25
UID
1

LT总司令

发表于 2008-7-7 11:51:06 |显示全部楼层
来自:http://www.hiadmin.com/mysql-pro ... %E6%96%B9%E6%A1%88/
前段时间和网友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对以上问题的不断追踪和到最后圆满的解决,并提供该方案给我们,使我们共同学习和提高。
感谢大家对linuxtone的支持!
您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢红之盟网络提供带宽支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2012-5-23 10:52 , Processed in 0.120261 second(s), 12 queries , Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部