我做的主/从复制在MySQL5.1和R/W分裂与MySQL代理0.8.4MySQL代理R/W复制和临时表
它工作正常,除非使用临时表。 MySQL抛出一个错误,临时表不存在。
这是查询日志主服务器:
CREATE TEMPORARY TABLE IF NOT EXISTS sh (ad_id MEDIUMINT(8) UNSIGNED NOT NULL, score float , INDEX (`ad_id`), INDEX (`score`)) ENGINE = MEMORY
INSERT INTO sh
SELECT cl.ID, 1
FROM classifieds cl
WHERE cl.advertiser_id = '40179'
这是查询日志中从站:
CREATE TEMPORARY TABLE IF NOT EXISTS sh (ad_id MEDIUMINT(8) UNSIGNED NOT NULL, score float , INDEX (`ad_id`), INDEX (`score`)) ENGINE = MEMORY
这是MySQL errror消息:
Occured during executing INSERT INTO sh SELECT cl.ID, 1 FROM classifieds cl WHERE cl.advertiser_id = '40179' statement
Error: 1146 Table 'dbname.sh' doesn't exist
如果我直接查询主(PHP变化DB连接掌握,而不是到mysql代理),它的工作原理没有PROBL EMS。
我用这MySQL代理配置:
[mysql-proxy]
daemon = true
pid-file = /home/mysqladm/mysql-proxy.pid
log-file = /home/mysqladm/mysql-proxy.log
log-level = debug
proxy-address = 192.168.0.109:3307
proxy-backend-addresses = 192.168.0.108:3306
proxy-read-only-backend-addresses = 192.168.0.109
proxy-lua-script = /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
有没有人对如何解决这种想法?感谢您的任何帮助!
//编辑第二天
我相信我知道为什么这不工作:
MySQL代理发送创建tmp和插入SELECT语句它复制命令正确地从主,那么在下一步中选择被发送到从机。可惜的是在MySQL中TMP表仅适用于发放它的连接,从而通过复制创建的TMP表无效由MySQL代理奴隶发出的第二个连接。
我现在想通过改变我的应用程序和发行解决这个与TMP表直接连接到主机。
请让我知道,如果你认为有更好的解决方案。